为什么 JavaScript 中有一个“null”值?
在JavaScript中,有两个值基本上说“我不存在” - 和.undefined
null
程序员没有给任何东西赋值的属性将是,但为了让一个属性成为,必须显式地赋值给它。undefined
null
null
我曾经认为需要因为是一个原始值和一个对象。实际上,两者都是基元值 - 这意味着两者都不能从构造函数返回,因为两者都将被转换为空对象(必须抛出错误以在构造函数中声明失败)。null
undefined
null
typeof null
'object'
undefined
null
它们也在布尔上下文中都计算为。我能想到的唯一真正的区别是,一个在数字上下文中计算为,另一个计算为。false
NaN
0
那么,为什么两者兼而有之,如果这只会让那些在试图找出是否已设置属性时错误地检查的程序员感到困惑呢?undefined
null
null
我想知道的是,是否有人有一个合理的例子,其中有必要使用无法用它来表达。null
undefined
因此,普遍的共识似乎是,这意味着“没有这样的财产”,而意味着“财产确实存在,但没有价值”。undefined
null
如果JavaScript实现实际上会强制实施这种行为,我可以接受这一点 - 但是一个完全有效的原始值,因此可以很容易地将其分配给现有属性以打破此契约。因此,如果要确保某个属性是否存在,则必须使用运算符或无论如何。所以再一次:和 的单独值的实际用途是什么?undefined
in
hasOwnProperty()
undefined
null
当我想取消设置不再使用但我不想使用的属性的值时,我实际上会使用。我应该改用吗?undefined
delete
null