小编典典

JavaScript检查null与undefined以及==和===之间的差异

javascript

  1. 如何检查一个变量,如果是nullundefined,是什么之间的差异nullundefined

  2. ==和之间有什么区别===(很难在Google上搜索“ ===”)?


阅读 249

收藏
2020-04-25

共1个答案

小编典典

如何检查一个变量,如果它null还是undefined

是变量null

if (a === null)
// or
if (a == null) // but see note below

…但请注意,如果ais ,则后者也适用undefined

它是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定义。

......是什么之间的差异nullundefined

它们都是通常用来表示缺少某些东西的值。undefined是更通用的变量,用作变量的默认值,直到为其分配了其他值,作为调用函数时未提供的函数参数的值,以及当您询问对象时获得的值没有它的财产。但也可以在所有这些情况下明确使用它。(不具有属性的对象和具有带值的属性undefined之间存在区别;调用undefined具有参数值的函数并将该参数完全关闭是有区别的。)

nullundefined:更具体:这是一个空白对象引用。当然,JavaScript是松散类型的,但并非与JavaScript交互的所有事物都是松散类型的。如果浏览器中的DOM之类的API需要空白的对象引用,则使用null,而不是undefined。同样,DOM的getElementById操作返回一个对象引用-
一个有效的对象引用(如果找到了DOM元素)或null(如果没有)。

有趣的是(或者不是),它们是自己的类型。也就是说,null是Null类型undefined中的唯一值,也是Undefined类型中的唯一值。

“ ==”和“ ===”有什么区别

它们之间的唯一区别是,==它将强制输入以尝试使值匹配,而===不会。举例"1" == 1来说,是正确的,因为"1"强制到1。但是"1" === 1false ,因为类型不匹配。("1" !== 1是。)的第一步(实际)===是“操作数的类型是否相同?”
如果答案为“否”,则结果为false。如果类型相同,那么它将完全==一样。

类型强制使用非常复杂的规则,并且可能会产生令人惊讶的结果(例如,"" == 0是正确的)。

2020-04-25