【发布时间】:2011-05-23 09:47:15
【问题描述】:
正如主题 JS 中提到的,Good Parts 似乎声称属性值不能是未定义的。但是,例如,如果您在 Chrome 的控制台中执行以下操作:
var foo = {}
foo.bar = undefined
foo
然后单击展开 foo 对象,您仍然可以看到 foo 包含一个名为 bar 的属性,其值为 undefined。当然,从 Javascript 方面来看,您无法区分 foo.bar 返回未定义和 foo.unexistingproperty 返回未定义之间的区别。但是控制台仍然坚持设置为未定义的属性有什么意义?
【问题讨论】:
-
我认为你可以称之为一个相当无用的 Chrome '功能':)
-
@sje397:一点用处都没有。存在和未定义的属性与不存在的属性之间存在差异。看我的回答。
-
所以就像很多答案说我知道你可以使用删除来摆脱属性等等。但是我的问题的主要思想是为什么这本书声称价值不能不确定。显然,这似乎是 Crockford 的错误陈述。
-
@Sam:我手头没有书。你能引用其中的相关部分吗?我怀疑他可能只是建议不要将
undefined分配给一个属性,这不是不合理的建议。 -
没有主题中的表述是书中的实际引用。它的措辞不像书中的大多数建议,Crockford 首先提到可以做某事,而是推荐它。该文本来自第 3 章对象,并且确实说“属性值可以是除未定义之外的任何值”。
标签: javascript