javascript数组为什么接受字符串值索引
为什么Javascript数组接受字符串作为索引,当它接受任何字符串值作为索引时,为什么不更改其长度 我是Javascript新手,遇到了这个问题javascript数组为什么接受字符串值索引,javascript,node.js,Javascript,Node.js,为什么Javascript数组接受字符串作为索引,当它接受任何字符串值作为索引时,为什么不更改其长度 我是Javascript新手,遇到了这个问题 var newArr=[]; newArr[0]=0; newArr[1]=1; newArr[“2”]=3; newArr[3]=3; newArr[4]=4; newArr[“a”]=“a”; 控制台日志(newArr)因为 typeof Array() === 'object' 因此,可以像在任何普通对象上一样向数组添加新属性,这不会更改数
var newArr=[];
newArr[0]=0;
newArr[1]=1;
newArr[“2”]=3;
newArr[3]=3;
newArr[4]=4;
newArr[“a”]=“a”;
控制台日志(newArr)代码>因为
typeof Array() === 'object'
因此,可以像在任何普通对象上一样向数组添加新属性,这不会更改数组长度,因为这与实际向数组添加(推送)元素不同
为什么脚本数组接受字符串作为索引
在赋值过程中,如果所有(普通)属性键还不是字符串,它们将被强制为字符串
newArr["2"] = 3;
与
newArr[2] = 3;
数组是对象,对象接受任意键值对,所以
newArr["a"] = "a";
是合法的,只是做起来很奇怪
数组的长度
仅检查数值属性,请参见:
此数组对象的length属性是一个数据属性,其值在数值上始终大于名称为数组索引的每个可删除属性的名称
通过“数组索引”,它意味着属性键是数字的
请注意,也可以使用符号键,在这种情况下,属性键不是字符串:
const sym=Symbol();
常量obj={};
obj[sym]=“foo”;
控制台日志(sym类型);
控制台日志(obj)代码>