我如何检查一个变量,如果它是null或,和undefined之间有什么区别?null``undefined
null
undefined
null``undefined
==和===(很难在 Google 上搜索 “===” )有什么区别?
==
===
我如何检查一个变量,如果它是null或undefined…
是变量null:
if (a === null) // or if (a == null) // but see note below
a…但请注意,如果is ,后者也将成立undefined。
a
是吗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使用参数的值调用函数与完全关闭该参数之间存在差异。)
null比undefined: 它是一个空白对象引用更具体一些。当然,JavaScript 是松散类型的,但并非所有与 JavaScript 交互的东西都是松散类型的。如果像浏览器中的 DOM 这样的 API 需要一个空白的对象引用,我们使用null,而不是undefined. 同样,DOM 的getElementById操作返回一个对象引用——一个有效的引用(如果它找到了 DOM 元素),或者null(如果它没有找到)。
getElementById
有趣的是(或不是),它们是它们自己的类型。也就是说,null是 Null 类型中undefined的唯一值,并且是 Undefined 类型中的唯一值。
“==”和“===”有什么区别
它们之间的唯一区别是==会进行类型强制以尝试使值匹配,而===不会。所以 for example"1" == 1是真的,因为"1"强制1. 但是"1" === 1是 false ,因为类型不匹配。("1" !== 1是真的。)第一步(真正的)===是“操作数的类型是否相同?” 如果答案为“否”,则结果为false。如果类型是相同的,它会做什么==。
"1" == 1
"1"
1
"1" === 1
"1" !== 1
false
类型强制使用相当复杂的规则并且可以产生令人惊讶的结果(例如,"" == 0是真的)。
"" == 0
规范中的更多内容: