首页 > 解决方案 > JavaScript 函数异常

问题描述

在 JavaScript 中,同时声明一个像这样的变量:

let something = arr.push()

为什么数组的行为就像调用 'arr.push()' 之类的 push 方法?

标签: javascriptarrays

解决方案


为什么数组的行为类似于调用“arr.push()”之类的推送方法。

因为这正是代码所做的。它调用 arr.push(),然后将其返回值(数组的新长度)分配给,与调用并将其返回值分配给something的方式完全相同。x = foo() foox

如果您想将函数本身分配给something,则最后不会使用 the ()

let something = arr.push;

您稍后可以像这样推送到数组:

something.call(arr, valueToPush);

.call(arr,部分在那里,以便this在调用期间引用数组arr引用,因为push使用this. 如果你想避免这种情况,你可以使用bind绑定arr到函数:

let something = arr.push.bind(arr);

那么这将起作用:

something(valueToPush);

推荐阅读