Javascript - 为啥从函数返回 array.push(x) 不会将元素 x 推送到数组中?

Posted

技术标签:

【中文标题】Javascript - 为啥从函数返回 array.push(x) 不会将元素 x 推送到数组中?【英文标题】:Javascript - Why returning array.push(x) from a function doens't push the element x into the array?Javascript - 为什么从函数返回 array.push(x) 不会将元素 x 推送到数组中? 【发布时间】:2015-06-11 11:58:59 【问题描述】:

我想知道为什么以下函数有效:

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


> foo([1,2,3])
[[1,2,3]]

虽然这个没有:

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


> foo([1,2,3])
1 

它们有什么区别?

【问题讨论】:

因为push 不会返回您要推送的数组。 阅读文档:developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 【参考方案1】:

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

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

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

【讨论】:

哎哟......现在我明白了。谢谢你:)

以上是关于Javascript - 为啥从函数返回 array.push(x) 不会将元素 x 推送到数组中?的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个函数返回 NaN?

Javascript:当元素存在于数组中时,为啥 indexOf 函数返回 -1?

javascript的Math.round()函数为啥不能精确小数点位数,

JavaScript为啥(typeof Object)返回的是function

为啥我的 javascript 调用回发并且我没有错误?

为啥可以从函数返回“向量”?