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

Fab*_*ndl 3 javascript

为什么以下代码有效?

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

/* prints "Hi" */
console.log(x[function() {}])
Run Code Online (Sandbox Code Playgroud)

编辑

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

在此输入图像描述

Raj*_*esh 8

根据我的理解,当你输入任何东西时[],该值将被转换为字符串.

所以当你这样做时[function(){}],它意味着["function(){}"]哪个是有效值.

如果你尝试这样的事情,那就更明显了:

var foo = {};
var bar = {};

var a = [];
a[foo] = "hello";
a[bar] = "world";

console.log(a[foo], a[bar], Object.keys(a))
Run Code Online (Sandbox Code Playgroud)