如何检查一个变量,如果它
null还是undefined…
是变量
null:
if (a === null)// orif (a == null) // but see note below
…但请注意,如果
ais ,则后者也适用
undefined。
它是
undefined:
if (typeof a === "undefined")// orif (a === undefined)// orif (a == undefined) // but see note below
…但是再次,请注意,最后一个是模糊的;如果
a是的话,也是正确的
null。
现在,尽管有上述情况, 检查这些内容的 通常 方法是使用它们是 假 的事实:
if (!a) { // `a` is falsey, which includes `undefined` and `null` // (and `""`, and `0`, and `NaN`, and [of course] `false`)}这由规范中的ToBoolean定义。
......是什么之间的差异
null和undefined?
它们都是通常用来表示缺少某些东西的值。
undefined是更通用的变量,用作变量的默认值,直到为其分配了其他值,作为调用函数时未提供的函数参数的值,以及当您询问对象时获得的值没有它的财产。但也可以在所有这些情况下明确使用它。(不具有属性的对象和具有带值的属性
undefined之间存在区别;调用
undefined具有参数值的函数并将该参数完全关闭是有区别的。)
null比
undefined:更具体:这是一个空白对象引用。当然,Javascript是松散类型的,但并非与Javascript交互的所有事物都是松散类型的。如果浏览器中的DOM之类的API需要空白的对象引用,则使用
null,而不是
undefined。同样,DOM的
getElementById操作返回一个对象引用-
一个有效的对象引用(如果找到了DOM元素)或
null(如果没有)。
有趣的是(或者不是),它们是自己的类型。也就是说,
null是Null类型
undefined中的唯一值,也是Undefined类型中的唯一值。
“ ==”和“ ===”有什么区别
它们之间的唯一区别是,
==它将强制输入以尝试使值匹配,而
===不会。举例
"1" == 1来说,是正确的,因为
"1"强制到
1。但是
"1"=== 1是 false ,因为类型不匹配。(
"1" !== 1是。)的第一步(实际)
===是“操作数的类型是否相同?”
如果答案为“否”,则结果为
false。如果类型相同,那么它将完全
==一样。
类型强制使用非常复杂的规则,并且可能会产生令人惊讶的结果(例如,
"" == 0是正确的)。



