javascript - 在js取值的时候, 这种现象叫什么, 如何解释呢?
PHPz
PHPz 2017-04-11 13:02:12
[JavaScript讨论组]



    
    test js


JS Test

PHPz
PHPz

学习是最好的投资!

全部回复(5)
迷茫

所有索引都是字符串,所有数组都是对象,数组不过只是比较特殊的对象而已

所有用 a[i] 访问的 a 的时候 会计算 i 的值并转换为字符串

计算 a[01] 的时候 先计算了 01 的值,在非严格模式下 01 是数 1 的八进制表示
01 == 1
所以 a[01] == a[1]

计算完 i 的值之后把它转为字符串
a[1] === a["1"]

因为 "1" != "01"
所以 a["1"] != a["01"]


关于数组和对象的索引之间的关系:

数组的 index 是 从 02^64-2 之间的整数 key(最后也转为字符串)
数组的 length 值至少比数组中最大的 index 值大 1

阿神

数组的索引是下标,对象的索引是属性,加不加引号都行,a[b] = a['b'], a[1] = a['1'] <> a['01']

怪我咯

两个问题

第一,数组的索引是元素位置,而对象的索引是对象属性键名。
第二,JavaScript中规定,数组和对象的键名都是字符串,即使数组的索引是整数,也会被转换成字符串后使用,所以你的arr['01']和map['01']行不通。

巴扎黑

数组本身也是 Object。。JS 中一切都是 Object。

简单来说,a[1] 是通过数组 index 访问。a['1'] 是通过数组原型对象的 key 来访问。

你的代码中。['01']是肯定访问不到的,因为没有这个属性。。。

PS:在 JS 里,我们可以这么玩儿:
生产中不会有人这么用,因为这么写其实很蠢。但至少能从一个侧面证明,Array 具有 Object 的键值对性质

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

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