javascript - 解释下面代码的输出
PHP中文网
PHP中文网 2017-04-11 12:41:50
[JavaScript讨论组]
var a={},
    b={key:'b'},
    c={key:'c'};

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

console.log(a[b]);

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(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 那结果就完全不一样了

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号