`null`是一种语言关键字,评估为一个特殊的值,通常用于表示值的缺失。使用`typeof`操作符与`null`一起会返回字符串"object",这表明`null`可以被视为表示"无对象"的特殊对象。然而,在实践中,`null`通常被认为是其自身类型的唯一成员,并且用于表示数字、字符串和对象的值缺失。大多数编程语言都有与JavaScript的`null`等价的值,例如`NULL`、`nil`或`None`。
JavaScript中的`undefined`也表示值的缺失,但意味着更深层次的不存在。具体而言,当变量的值尚未初始化时,它是`undefined`,并且尝试访问不存在的对象属性或数组元素也会导致`undefined`。此外,未明确返回值的函数将返回`undefined`,并且未传递的函数参数的值将为`undefined`。`undefined`是预定义的全局常量(不同于像`null`这样的语言关键字,尽管在实践中这种区别并不关键),其初始值为`undefined`。对`undefined`应用`typeof`操作符将返回"undefined",表示这个值是其特殊类型的唯一成员。
撇开微小的差异,`null`和`undefined`都可以用来表示值的缺失,并且常常可以互换使用。相等性操作符`==`将它们视为相等(要区分它们,必须使用严格相等操作符`===`)。由于它们都是falsy值,所以它们可以在布尔上下文中用作`false`。既`null`也`undefined`都没有属性或方法。实际上,在这些值上使用`.`或`[]`访问属性或方法会导致`TypeError`。
在我看来,`undefined`可以用于指示系统级别、意外或类似的错误,其中缺失一个值。另一方面,`null`可以用于指示程序级别、正常或预期的值缺失。在实际编码中,我倾向于避免使用`null`和`undefined`。如果我需要将这样的值分配给变量或属性,或者从函数中传递/接收这样的值,我通常使用`null`。然而,一些程序员积极避免使用`null`,而更倾向于使用`undefined`。
(程序员的软技能:ke.qq.com/course/6034346)
网友评论