Javascript - 为什么从函数返回array.push(x)并不会将元素x推入数组?

Bru*_*que 1 javascript arrays push return function

我想知道为什么以下功能有效:

function foo(list){
    var array = [];
    array.push(list);
    return array;
}

> foo([1,2,3])
[[1,2,3]]
Run Code Online (Sandbox Code Playgroud)

虽然这个没有:

function foo(list){
    var  array = [];
    return array.push(list);
}

> foo([1,2,3])
1 
Run Code Online (Sandbox Code Playgroud)

他们之间有什么区别?

Aru*_*hny 7

如果你看一下push方法的定义,它会在push之后返回数组的长度,而不是数组本身,这就是它返回1的原因.

push()方法将一个或多个元素添加到数组的末尾,并返回数组的新长度.

您正在将具有3个元素的数组推送到新数组,因此在新数组中,您有一个数组作为其内容,因此返回1