如何检查一个变量,如果是null或undefined,是什么之间的差异null和undefined?
null
undefined
==和之间有什么区别===(很难在Google上搜索“ ===”)?
==
===
如何检查一个变量,如果它null还是undefined…
是变量null:
if (a === null) // or if (a == null) // but see note below
…但请注意,如果ais ,则后者也适用undefined。
a
它是undefined:
if (typeof a === "undefined") // or if (a === undefined) // or if (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(如果没有)。
getElementById
有趣的是(或者不是),它们是自己的类型。也就是说,null是Null类型undefined中的唯一值,也是Undefined类型中的唯一值。
“ ==”和“ ===”有什么区别
它们之间的唯一区别是,==它将强制输入以尝试使值匹配,而===不会。举例"1" == 1来说,是正确的,因为"1"强制到1。但是"1" === 1是 false ,因为类型不匹配。("1" !== 1是。)的第一步(实际)===是“操作数的类型是否相同?” 如果答案为“否”,则结果为false。如果类型相同,那么它将完全==一样。
"1" == 1
"1"
1
"1" === 1
"1" !== 1
false
类型强制使用非常复杂的规则,并且可能会产生令人惊讶的结果(例如,"" == 0是正确的)。
"" == 0