这是怎么回事全球 = 7
我有以下代码。
a=7 global[{a}]=7 global[{a}] // returns 7 b[{a}]=7 b[{a}] // returns undefined
我真的不知道怎么回事,它看起来像一个对象作为属性,但是我不明白为什么第二个例子是未定义的。
所以这就是我猜想的事情。
正如你前面提到的,全局和window
对象一样。
所以,当你在做,
global[{a}] = 7;
它与global["[object Object]"] = 7
相似
那么你会得到答案:: global[{}]
为7
。
现在,为此
b[{a}]=7 b[{a}] // returns undefined
你还没有将b
声明为对象,这就是为什么你没有定义答案。
如果你做了以下,结果将是相同的;
b = {}; b[{a}]=7; b[{a}] // returns 7
当你使用括号expression式来访问某些东西的时候,无论你把什么放在括号里,都会被转换成字符 转换为string后的任何对象都会返回[object Object]
当您执行global[{a}]
,将转换为global["[object Object]"]
并在该属性名称上进行存储/访问
a = 7 b = {} b[{a}] = 7 console.log(b[{ a }]) // returns 7 console.log(b["[object Object]"]) // returns 7