小编典典

JavaScript 检查 null 与未定义以及 == 和 === 之间的区别

all

  1. 我如何检查一个变量,如果它是null或,和undefined之间有什么区别?null``undefined

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


阅读 77

收藏
2022-03-06

共1个答案

小编典典

我如何检查一个变量,如果它是nullundefined

是变量null

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

a…但请注意,如果is ,后者也将成立undefined

是吗undefined

if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below

…但同样,请注意最后一个是模糊的;如果ais也是如此null

现在,尽管有上述情况,检查这些的 通常 方法是使用它们是错误的 事实

if (!a) {
    // `a` is falsey, which includes `undefined` and `null`
    // (and `""`, and `0`, and `NaN`, and [of course] `false`)
}

这是由规范中的ToBoolean定义的。

null… 和和有什么区别undefined

它们都是通常用来表示缺少某物的值。undefined是更通用的一个,用作变量的默认值,直到它们被分配一些其他值,作为调用函数时未提供的函数参数的值,以及当您询问对象时获得的值对于它没有的属性。但它也可以在所有这些情况下明确使用。(没有属性的对象与具有
value 的属性undefined之间存在差异;undefined使用参数的值调用函数与完全关闭该参数之间存在差异。)

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

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

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

它们之间的唯一区别是==会进行类型强制以尝试使值匹配,而===不会。所以 for example"1" == 1是真的,因为"1"强制1. 但是"1" === 1false ,因为类型不匹配。("1" !== 1是真的。)第一步(真正的)===是“操作数的类型是否相同?” 如果答案为“否”,则结果为false。如果类型是相同的,它会做什么==

类型强制使用相当复杂的规则并且可以产生令人惊讶的结果(例如,"" == 0是真的)。

规范中的更多内容:

2022-03-06