gpt4 book ai didi

javascript - 为什么字符串索引(尽管代表整数)在数组中起作用?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:41:31 24 4
gpt4 key购买 nike

为什么下面的枚举是正确的?

var arr = [];
arr[0] = 'foo';
arr['1'] = 'bar';

arr.forEach(v => console.log(v)); // foo, bar

arr[1]arr['1'] 也可以。这是 Array 的一个特性,将整数对应的字符串映射到它们的整数值吗?

最佳答案

这是因为 Javascript 中的数组只是带有一些专用语法糖的对象。

比较:

var arr = [];
arr[0] = 'foo';
arr['1'] = 'bar';
console.log(arr['0']);
console.log(arr[1]);

...到:

var obj = {};
obj[0] = 'foo';
obj['1'] = 'bar';
console.log(obj['0']);
console.log(obj[1]);

基本上,Array 是一种Object,具有数组特定的方法和不可枚举的属性,例如length,可以是使用专用速记语法 [ items... ]

实例化

数组的索引实际上是字符串,就像任何对象中的所有键一样,它之所以起作用是因为使用数字作为键引用对象属性会将该数字强制转换为其字符串表示形式(原则上是这样。我假设大多数现代浏览器都在内部对此进行了大量优化)。

例子:

var obj = {};
obj[1.5] = 'foo';
console.log('1.5' in obj);
console.log(obj[1.5]);

var arr = [];
arr[0.5] = 'foo';
console.log('0.5' in arr);
console.log(arr[0.5]);

arr[0] = 'bar';
arr[1] = 'baz';
console.log(arr.length);
console.log(Object.keys(arr));

关于javascript - 为什么字符串索引(尽管代表整数)在数组中起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44923397/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com