<分区>
为什么下面的代码有效?
var x = []
x[function() {}] = "Hi"
/* prints "Hi" */
console.log(x[function() {}])
编辑
我知道所有内容都已转换为字符串属性,但为什么我可以添加 x["function() {}"] = "Yo"
并同时拥有这两个属性?
标签 javascript
<分区>
为什么下面的代码有效?
var x = []
x[function() {}] = "Hi"
/* prints "Hi" */
console.log(x[function() {}])
编辑
我知道所有内容都已转换为字符串属性,但为什么我可以添加 x["function() {}"] = "Yo"
并同时拥有这两个属性?
最佳答案
据我了解,当您将任何内容放入 []
时,该值将转换为字符串。
所以当您执行 [function(){}]
时,它意味着 ["function(){}"]
是一个有效值。
如果你尝试这样的事情,它会更明显:
var foo = {};
var bar = {};
var a = [];
a[foo] = "hello";
a[bar] = "world";
console.log(a[foo], a[bar], Object.keys(a))
关于javascript - 为什么 x[function() {}] 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294088/