我已经声明了一个数组a = [1,2,3,4,5]
当我写a[1]
时,返回2 这完全没问题,但是当我写a['1']
时,给了我2 而不是给出错误。
我在那里期待一个错误。为什么它会像那样??
答案 0 :(得分:2)
所有属性名称都是字符串。
如果传递一个数字,它会在用于查找属性值之前转换为字符串。
console.log(1 == '1');
答案 1 :(得分:0)
首先,数组也是属性名为0,1,2,....n
属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都通过
toString
方法被类型化为字符串。 [Ref]
答案 2 :(得分:0)
在JS中,Array
基本上是Object
,因此大多数情况下就像一个。在这种情况下,只要您不访问Array
的{{1}}或尝试迭代.length
,这些就是等效的:
a
这也可行:
const a = {"0": foo};
const b = ["foo"];
因此const a = ["foo"];
a.bar = "baz";
console.log(a);
和a[1]
是等价的,这正是预期的结果。