gpt4 book ai didi

javascript - crockford 说 undefined 不能是属性值是什么意思?

转载 作者:可可西里 更新时间:2023-11-01 02:06:55 24 4
gpt4 key购买 nike

在 Javascript the good parts 一书中,Ch3 on objects 的开篇,它指出:

An object is a container of properties, where a property has a name and a value. A property name can be any string, including the empty string. A property value can be any Javascript value except for undefined.

注意:undefined在书中被突出显示,表示它是一个文字。

然而,在实践中,我能够做到。

var a = { "name": undefined };

我的理解有什么问题吗?

最佳答案

我相信答案是他错了。

如您所见,您可以设置 var a = { "name": undefined };

  • a.name === undefined
  • a.name === a.someFakeProperty

不过,这是它们的不同之处:

  • 'someFakeProperty' === false
  • 'name' in a === true

或者换一种方式,

  • a.hasOwnProperty('someFakeProperty') === false
  • a.hasOwnProperty('name') === true

使用有点臭名昭著的 for..in 循环,

for (var i in a) {
alert(i);
}

... 会给你 name

因此,通过值您可能无法区分 undefined 和 undefined,但它们在内部是完全不同的。

补充:他对属性名称的看法也是错误的 - a[window] = 43; a[window] == 43; 就好了。当然,您不能再执行 a.window,但是 a.___ 只是 a['___'] 的语法糖。 如评论中所述,属性名称被强制转换为字符串,所以我在这一点上错了。

关于javascript - crockford 说 undefined 不能是属性值是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4181316/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com