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

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

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

什么是null

null有两个特性需要明白:

  • 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都是六个假值中的两个。下面是一个完整的清单:

  • false
  • 0 (zero)
  • "" (empty string)
  • null
  • undefined
  • NaN (Not A Number)

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

  • Boolean
  • Null
  • Undefined
  • Number
  • String
  • Symbol

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

总结
  • null是指定的值,不代表任何意思。
  • undefined通常表示已声明变量但尚未定义。
  • null和undefined是假值。
  • null和undefined都是原语。但是,错误显示 typeof null = object。
  • null !== undefined 但 null == undefined。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页