Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么字符串索引在JavaScript数组中是合法的?_Javascript - Fatal编程技术网

为什么字符串索引在JavaScript数组中是合法的?

为什么字符串索引在JavaScript数组中是合法的?,javascript,Javascript,这是合法的: var arr = [1, 2, 3, 4, 5]; arr['ex1'] = 6; arr.ex2 = 7; 为什么??还建议利用这种行为吗?因为数组只是对象,对象可以具有任意属性。您可以对任何其他对象执行相同的操作,例如函数或正则表达式 请注意,ex2不被视为“数组索引”。只有名称介于0和232-2之间的属性才会被视为数组元素 利用这种行为是否明智 不,视情况而定。我认为这会使代码更难理解,意图也不那么清晰,而且会让不太熟悉JS的人感到困惑 当然,这种灵活性也是一个非常强大的

这是合法的:

var arr = [1, 2, 3, 4, 5];
arr['ex1'] = 6;
arr.ex2 = 7;

为什么??还建议利用这种行为吗?

因为数组只是对象,对象可以具有任意属性。您可以对任何其他对象执行相同的操作,例如函数或正则表达式

请注意,
ex2
不被视为“数组索引”。只有名称介于0和232-2之间的属性才会被视为数组元素

利用这种行为是否明智

不,视情况而定。我认为这会使代码更难理解,意图也不那么清晰,而且会让不太熟悉JS的人感到困惑

当然,这种灵活性也是一个非常强大的功能。你应该负责任地使用它,并且只有在没有其他选择的情况下才可能使用它


但是,我还没有看到向数组添加额外属性特别有用的情况。

还请注意,
arr[0]
arr[“0”]
相同,您也可以为对象使用整数索引;obj[0]=1有趣的事实。数组的索引器与对象相同。arr[0]首先将0强制转换为字符串或arr[“0”]是的,这更准确
length
可以是max
2^32-1
,这使得
2^32-2
的索引最高。(更新;)