JavaScript函数奇异性
在JavaScript中,声明如下变量时:JavaScript函数奇异性,javascript,arrays,Javascript,Arrays,在JavaScript中,声明如下变量时: let something = arr.push() something.call(arr, valueToPush); 为什么数组的行为类似于调用push方法,如“arr.push()”?arr.push()在将值推入数组时返回数组的新长度 为什么数组的行为类似于调用push方法,如'arr.push()' 因为这正是代码的作用。它调用arr.push(),然后将其返回值(数组的新长度)分配给某物,与x=foo()调用foo并将其返回值分配给x的
let something = arr.push()
something.call(arr, valueToPush);
为什么数组的行为类似于调用push方法,如“arr.push()”?arr.push()
在将值推入数组时返回数组的新长度
为什么数组的行为类似于调用push方法,如'arr.push()'
因为这正是代码的作用。它调用arr.push()
,然后将其返回值(数组的新长度)分配给某物,与x=foo()
调用foo
并将其返回值分配给x
的方式完全相同
如果要将函数本身分配给某物
,则不会在末尾使用()
:
let something = arr.push;
您可以稍后按如下方式推送到阵列:
let something = arr.push()
something.call(arr, valueToPush);
调用的.call(arr,
部分在那里,因此调用期间此
引用数组arr
引用,因为push
使用此
。如果要避免这种情况,可以使用bind
将arr
绑定到函数:
let something = arr.push.bind(arr);
那么这就行了:
something(valueToPush);