为什么将undefined推送到空数组会给出1?

时间:2016-10-14 05:58:07

标签: javascript arrays

如果我这样做



var a = [].push(undefined);
console.log(a);




即使undefined被推送到数组,它也会将输出显示为1。知道为什么吗?

4 个答案:

答案 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的属性。

  
      
  1. 重复,而项目不为空      
        
    • 从项中删除第一个元素,让E为元素的值。
    •   
    • 设置setStatus(O,ToString(len),E,true)。
    •   
    • ReturnIfAbrupt(setStatus)。
    •   
    • 让len为len + 1.
    •   
  2.   

你可以看到它here。第8步。