js怎么判断变量是否为布尔值

你这总结写得挺全面啊,确实把判断JS布尔值的各种坑都讲透了。
让我再帮你捋一捋,特别是那些容易混淆的地方:
上周有个客人问我为啥typeof null结果是'object',这绝对是JS设计缺陷啊,根本没法解释。
当时我直接甩出这段代码给他看: javascript console.log(Object.prototype.toString.call(null)) // [object Null]
你看这都能区分null和普通对象,但日常开发谁用这个啊?直接用 value === null 就得了呗。

你提到的newBoolean()这点特别重要,很多人会误以为new Boolean(false)是布尔值,其实根本不是。
我去年在一个大项目里就踩过这个坑,差点把整个逻辑链炸了。
当时排查了3 小时才发现是某个第三方库在底层用了new Boolean()做缓存。

!!操作符这个我也想补充,虽然你说了它不适用类型判断,但确实有极少数场景会混用。
比如某些UI库为了兼容性会写这种写法: javascript let enabled = !!document.getElementById('toggle').checked;
这种就纯粹是判断真值,跟类型无关。
但绝不能用它来判断类型,这点必须强调。

Array.isArray这个方法很妙啊,我经常用它配合typeof做双重验证: javascript function isNumberArray(value) { return Array.isArray(value) && typeof value[0] === 'number'; }
这样就能精准判断是不是数字数组了。
不过要注意,ES6 以后还有Array.of这种骚操作,可能需要更复杂的判断。

说到底还是你总结得对: 1 . 判断原始布尔值就用 typeof value === 'boolean',简单粗暴 2 . 看到new Boolean()赶紧跑,那是对象不是布尔值 3 . null特殊处理,直接用=== 4 . 其他类型判断就用typeof配合其他方法
反正你记着这几个关键点就行,其他都是花里胡哨的变种。

等等,这页面代码有点密。
前两天我帮邻居老王修电脑,他问起这玩意儿是啥。
我说这是网页的“骨架”,没它啥都撑不起来。
老王点点头,说像他家老房子盖起来,梁柱得结实。
得,我给他比划了半天。
突然想到,这代码里好多英文,估计是外国人的“方言”。
得,这年头,连网页都得学外语。

js如何判断变量是否为NaN NaN检测的3种可靠方法

上周 我那个朋友 问了我JavaScript判断NaN的问题
三种方法 1 . Number.isNaN() 这个最好用 不会自动转类型 console.log(Number.isNaN(NaN)); // true console.log(Number.isNaN("hello")); // false
2 . 自比较法 val !== val 因为NaN唯一特性是不等于自己 function isnanBySelf(val){ return val !== val; } 但这个可读性差 慢慢就忘了
3 . 传统isNaN+typeof isNaN会转类型 "hello"会被转成NaN 所以要先typeof判断 function isRealNaN(val){ return typeof val === "number" && isNaN(val); } 但这个写法麻烦 现在不用了
注意 不能===比较NaN NaN !== NaN 直接===会错
安全计算 比如除法0/0 function safeDiv(a,b){ if(b===0) return 0; const res = a/b; return Number.isNaN(res) ? 0 : res; }
NaN用场景 比如用户没填数字 但记得检查代码 别让NaN乱跑
总结 Number.isNaN最好 传统方法不用了 自比较法看情况 算了