gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 11:14:23 27 4
gpt4 key购买 nike

  1. 如何检查变量是否为 nullundefined 以及 null 之间的区别未定义?

  2. ===== 有什么区别(Google 很难搜索到 "===")?

最佳答案

How do I check a variable if it's null or undefined...

是变量null:

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

...但请注意,如果 aundefined,则后者也为真。

是不是未定义:

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

...但同样,请注意最后一个是模糊的;如果 anull 也是如此。

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

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

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

...and what is the difference between the null and undefined?

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

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

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

What is the difference between "==" and "==="

它们之间的唯一区别是 == 会进行类型强制以尝试使值匹配,而 === 不会。例如 "1"== 1 为真,因为 "1" 强制转换为 1。但是 "1"=== 1false,因为类型不匹配。 ("1"!== 1 为真。)=== 的第一步(实际)是“操作数的类型是否相同?”如果答案为“否”,则结果为 false。如果类型相同,则它的作用与 == 完全相同。

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

规范中的更多内容:

关于JavaScript 检查 null 与未定义以及 == 和 === 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5101948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com