JS Array a [' 1']不会出错

时间:2017-03-02 11:39:48

标签: javascript arrays

我已经声明了一个数组a = [1,2,3,4,5]

当我写a[1]时,返回2 这完全没问题,但是当我写a['1']时,给了我2 而不是给出错误。

我在那里期待一个错误。为什么它会像那样??

3 个答案:

答案 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]是等价的,这正是预期的结果。