如果我这样做
var a = [].push(undefined);
console.log(a);

即使undefined被推送到数组,它也会将输出显示为1
。知道为什么吗?
答案 0 :(得分:3)
您正在以错误的方式对其进行测试。 a
未定义为数组,我认为您认为它是。试试这个:
var a = []
a.push(undefined);
console.log(a);

您正在将push
函数的返回值赋给变量a
。在上下文中推送当前元素后,push
返回数组的长度。因此,在数组中按undefined
后返回1。
答案 1 :(得分:3)
它推动数组的长度而不是元素
例如
var a = [].push(5,6,7,8);
console.log(a); //gives 4
答案 2 :(得分:1)
Push返回数组的新长度,这就是a
答案 3 :(得分:1)
在为数组对象分配新属性时,没有进行任何显式检查。在这个意义上分配一个新属性,根据数组的长度设置值为0,1,2..n的属性。
- 重复,而项目不为空
醇>
- 从项中删除第一个元素,让E为元素的值。
- 设置setStatus(O,ToString(len),E,true)。
- ReturnIfAbrupt(setStatus)。
- 让len为len + 1.
你可以看到它here。第8步。