扫码关注官方订阅号
test js JS Test
学习是最好的投资!
所有索引都是字符串,所有数组都是对象,数组不过只是比较特殊的对象而已
所有用 a[i] 访问的 a 的时候 会计算 i 的值并转换为字符串
a[i]
a
i
计算 a[01] 的时候 先计算了 01 的值,在非严格模式下 01 是数 1 的八进制表示即 01 == 1 所以 a[01] == a[1]
a[01]
01
1
01 == 1
a[01] == a[1]
计算完 i 的值之后把它转为字符串a[1] === a["1"]
a[1] === a["1"]
因为 "1" != "01"所以 a["1"] != a["01"]
"1" != "01"
a["1"] != a["01"]
数组的 index 是 从 0 到 2^64-2 之间的整数 key(最后也转为字符串)数组的 length 值至少比数组中最大的 index 值大 1
index
key
length
数组的索引是下标,对象的索引是属性,加不加引号都行,a[b] = a['b'], a[1] = a['1'] <> a['01']
两个问题
第一,数组的索引是元素位置,而对象的索引是对象属性键名。第二,JavaScript中规定,数组和对象的键名都是字符串,即使数组的索引是整数,也会被转换成字符串后使用,所以你的arr['01']和map['01']行不通。
数组本身也是 Object。。JS 中一切都是 Object。
简单来说,a[1] 是通过数组 index 访问。a['1'] 是通过数组原型对象的 key 来访问。
a[1]
a['1']
你的代码中。['01']是肯定访问不到的,因为没有这个属性。。。
PS:在 JS 里,我们可以这么玩儿:生产中不会有人这么用,因为这么写其实很蠢。但至少能从一个侧面证明,Array 具有 Object 的键值对性质
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
所有用
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是 从 0 到 2^64-2 之间的整数key(最后也转为字符串)数组的
length值至少比数组中最大的index值大 1数组的索引是下标,对象的索引是属性,加不加引号都行,a[b] = a['b'], a[1] = a['1'] <> a['01']
两个问题
数组本身也是 Object。。JS 中一切都是 Object。
简单来说,
a[1]是通过数组 index 访问。a['1']是通过数组原型对象的 key 来访问。你的代码中。['01']是肯定访问不到的,因为没有这个属性。。。
PS:在 JS 里,我们可以这么玩儿:
生产中不会有人这么用,因为这么写其实很蠢。但至少能从一个侧面证明,Array 具有 Object 的键值对性质