js中null和undefined常见场景(了解JavaScript中null和undefined之间的差异和相似之处)(1)

乍一看,null和undefined看起来可能相同,但它们远非如此。本文将探讨JavaScript中null和undefined之间的差异和相似之处。

什么是null

null有两个特性需要明白:

下面是一个例子,将null赋值给变量a

let a = null; console.log(a); // null

什么是undefined

undefined最通常意味着已声明变量,但未定义变量。例如:

let b; console.log(b); // undefined

也可以显式设置变量等于undefined:

let c = undefined; console.log(c); // undefined

最后,当查找对象中不存在的属性时,将收到undefined:

var d = {}; console.log(d.fake); // undefined

null和undefined之间的相似之处

在JavaScript中,只有六个假值。 null和undefined都是六个假值中的两个。下面是一个完整的清单:

JavaScript中的任何其他值都被认为是真实的。同样在JavaScript中,有六个原始值。 null和undefined都是原始值。这是一个完整的清单:

JavaScript中的所有其他值都是对象(对象,函数,数组等)。

有趣的是,当使用typeof测试null时,它返回对象:

let a = null; let b; console.log(typeof a); // object console.log(typeof b); // undefined

这是从JavaScript开始以来发生的,并且通常被认为是原始JavaScript实现中的错误。

null !== undefined

如您所见,null和undefined不同,但有一些相似之处。因此,有意义的是null不严格等于undefined。

null !== undefined

但是,这可能会让你感到惊讶,null松散地等于未定义。

null == undefined

在JavaScript中,double等于测试松散相等和预成型类型强制。这意味着我们在将它们转换为通用类型后比较两个值。

实际差异

null和undefined之间的实际区别呢?考虑下面的代码:

let logHi = (str = 'hi') => { console.log(str); }

上面的代码创建了一个名为logHi的函数。此函数需要一个参数,如果未提供该参数,则将该参数的默认值设置为hi。这是看起来像:

logHi(); // hi

我们还可以提供一个参数来覆盖这个默认值:

logHi('bye'); // bye

使用默认参数时,undefined将使用默认值,而null则不使用默认值。

logHi(undefined); // hi logHi(null); // null

总结

,