Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays - Fatal编程技术网

Javascript 为什么长度在数组对象中不显示为键?

Javascript 为什么长度在数组对象中不显示为键?,javascript,arrays,Javascript,Arrays,因此,关于数组在java脚本中如何工作的问题,这里有一些行为 var a = [1,2,3,4] Object.keys(a) >> ['0','1','2','3'] a['0'] >> 1 a.length >> 4 a.something = 'value' a >> [1,2,3,4] console.log(a) >> [1, 2, 3, 4, something: "value"] Object.keys(a) >&g

因此,关于数组在java脚本中如何工作的问题,这里有一些行为

var a = [1,2,3,4]
Object.keys(a)
>> ['0','1','2','3']
a['0']
>> 1
a.length
>> 4
a.something = 'value'
a
>> [1,2,3,4]
console.log(a)
>> [1, 2, 3, 4, something: "value"]
Object.keys(a)
>> ['0','1','2','3','something']
a.something
>> 'value'
a.length
>> 4
a.length = 5
a 
>>[1, 2, 3, 4, undefined]
console.log(a)
>>[1, 2, 3, 4, something: "value"]
Object.keys(a)
>> ["0", "1", "2", "3", "something"]
a.length = 'len'
> Uncaught RangeError: Invalid array length(…)

我的问题是,为什么“长度”在数组对象中不显示为键?它的作用类似于on,尽管它似乎被解析为int。如果它不是函数或键,它是什么?

length
是一个对象属性,
可枚举
,设置为
false
。因此,当您迭代它的键时,它将不会显示

var a=[1,2,3,4];
log(Object.getOwnPropertyDescriptor(一个“长度”);

// => ... enumerable:false…
如果您使用
Object.getOwnPropertyNames()
,它会显示出来,它会获取所有非继承属性,而不管它们的可枚举设置如何。谢谢!这已经困扰我很长时间了。@lonewarrior556,没问题,我喜欢它,我自己也在读它:-)