javascript - 为什么 x[function() {}] 有效?

标签 javascript

<分区>

为什么下面的代码有效?

var x = []
x[function() {}] = "Hi"

/* prints "Hi" */
console.log(x[function() {}])

编辑

我知道所有内容都已转换为字符串属性,但为什么我可以添加 x["function() {}"] = "Yo" 并同时拥有这两个属性?

enter image description here

最佳答案

据我了解,当您将任何内容放入 [] 时,该值将转换为字符串。

所以当您执行 [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/

相关文章:

javascript - 只读属性

javascript - Lodash _.some 不工作

javascript - TypeScript 中 'this' 的作用域

javascript - jQuery 处理按键组合

javascript - 保存后的 jqGrid 事件不会触发

javascript - 无法在我的 JSP 中检索 JSON 响应

javascript - 如何将文本拆分为 URL 数组和空格分隔的短语?

JavaScript 到 Livescript 的转换; js2ls 的问题?

javascript - 将表单从 Angular JS 发送到 Spring

javascript - 将字符串与每个 li 元素进行比较