在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
改用吗?
In JavaScript, there are two values which basically say 'I don't exist' - undefined and null.
不,只能undefined
这么说。
undefined
。