看下面的代码,输出的结果是什么?并解释你的答案。
var a={},
b={key:'b'},
c={key:'c'};
a[b]=123;
a[c]=456;
console.log(a[b]);
不少人可能会以为答案是 123 ,但结果是 456 ,为什么会是这样子的呢。
原因是我们忽略了一个知识点:JavaScript在设置对象的属性的时候,会暗中字符串化参数值。
在这里例子中,由于 b 和 c都是对象,把它们设置为对象a的参数,它们都将被转换为 "[object Object]" 。
结果就是, a[b] 和 a[c] 都相当 "[object Object]" ,而后者会将前者的值覆盖。
因此,设置或引用 a[c] 和设置或引用 a[b] 完全相同。所以得到的答案是 456 。
热门文章
原创教程
原创教程:
附加习题:
趣味职场
职场焦虑:
感到迷茫:
培训出身:
培训费用:
搞笑黑话:
职业自由:
职场形象:
合作推广分割线