解释下面代码的输出

var a={},
    b={key:'b'},
    c={key:'c'};

a[b]=123;
a[c]=456;

console.log(a[b]);

这段代码为什么输出的是 456 ?

阅读 2.2k
3 个回答

a[b] = 123会转化为a["[object Object]"] = 123
a[c] = 456会转化为a["[object Object]"] = 456
console.log(a[b])会转化为console.log(a["[object Object]"])

因此是结果为456

因为b,c都是对象Object类对象。toString都是"[object Object]"

a是一个对象
b和c都是对象 如果写成a[object]的话 里面是没有键的

你给a复制了123 又重新赋值了456,会覆盖掉前面一次的赋值
a的值就是object:456
跟里面的b,c是什么 无关的,因为里面都是object

如果你写成 a['b'] = 123 a['c'] = 456 那结果就完全不一样了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题