Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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 JS数组a[';1';]未给出错误_Javascript_Arrays - Fatal编程技术网

Javascript JS数组a[';1';]未给出错误

Javascript JS数组a[';1';]未给出错误,javascript,arrays,Javascript,Arrays,我声明了一个数组a=[1,2,3,4,5] 当我写a[1]时,它返回2,这非常好,但是当我写a['1']时,它也会给我2,而不是给出错误 我以为那里会出错。为什么它会这样呢???所有属性名称都是字符串 如果您传递一个数字,它将在用于查找属性值之前转换为字符串 console.log(1=='1')所有属性名称都是字符串 如果您传递一个数字,它将在用于查找属性值之前转换为字符串 console.log(1=='1')首先,数组也是一个对象,其属性名为0,1,2,….n 属性名称必须是字符串。这

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

当我写
a[1]
时,它返回2,这非常好,但是当我写
a['1']
时,它也会给我2,而不是给出错误


我以为那里会出错。为什么它会这样呢???

所有属性名称都是字符串

如果您传递一个数字,它将在用于查找属性值之前转换为字符串


console.log(1=='1')所有属性名称都是字符串

如果您传递一个数字,它将在用于查找属性值之前转换为字符串


console.log(1=='1')首先,数组也是一个对象,其属性名为
0,1,2,….n

属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都通过
toString
方法键入到字符串中。[]


首先,数组也是属性名为
0,1,2,….n

属性名称必须是字符串。这意味着非字符串对象不能用作对象中的键。任何非字符串对象(包括数字)都通过
toString
方法键入到字符串中。[]


在JS中,
数组
基本上是一个
对象
,因此其行为大部分类似于一个对象。在这种情况下,只要您不访问
数组
.length
或尝试迭代
a
,这些都是等效的:

const a = {"0": foo};    
const b = ["foo"];
这也会起作用:

const a = ["foo"];
a.bar = "baz";

console.log(a);

因此
a[1]
a['1']
是等价的,这正是我们所期望的。

在JS中,数组基本上是一个
对象,因此其行为基本上与对象类似。在这种情况下,只要您不访问
数组
.length
或尝试迭代
a
,这些都是等效的:

const a = {"0": foo};    
const b = ["foo"];
这也会起作用:

const a = ["foo"];
a.bar = "baz";

console.log(a);

所以
a[1]
a['1']
是等价的,这正是我们所期望的。

但是数组的索引不是数值的吗?@Rajesh-不是。它们是字符串,就像其他任何属性一样。在数组中,名称为
=
的属性是特殊大小写的(例如,通过
长度
getter属性),但它们仍然是字符串。谢谢。我不知道这一点。:-)但是数组的索引不是数字的吗?@Rajesh-No。它们和其他属性一样是字符串。在数组中,名称为
=
的属性是特殊大小写的(例如,通过
长度
getter属性),但它们仍然是字符串。谢谢。我不知道这一点。:-)