一个空的javascript.push()有什么作用吗



我正在查看另一个开发人员的一些遗留代码,我看到了这条神秘的线:

if (hasEmail) {
fields.push();
}

非常困惑。。。我认为这一行没有任何作用,因为推送没有被推送的元素,但在我删除它之前,我想知道是否有我不知道的东西,一些我从未考虑过的推送的javascript用法。

如果这就是全部代码,是的,它什么都不做。

const arr = [];
arr.push();
console.log(arr);

传递给push的每个元素都被添加到数组的末尾。如果没有传递任何元素,则不会添加任何元素。但是,还有一件事需要考虑——push返回数组的新长度。因此,理论上有可能(尽管在一个健全的代码库中不太可能(看到类似的东西

const arr = ['foo', 'bar'];
console.log(arr.push() * arr.push());

其中push用于获取数组的长度,因此在删除该表达式之前,请确保该表达式未被使用。

虽然第一个参数在MDN上没有显示为可选的,但规范显示第一个参数确实是可选的:

https://tc39.github.io/ecma262/#sec-阵列.原型.推送

  1. 让O是?ToObject(此值(
  2. 让len去吧?ToLength(?Get(O,"length"((
  3. 让items是一个List,其元素按从左到右的顺序是传递给此函数调用的参数
  4. 让argCount是项中的元素数
  5. 如果len+argCount>253-1,则引发TypeError异常
  6. 重复,项目不为空

a。从项中移除第一个元素,并将E设为该元素的值。

b。表演Set(O,!ToString(len(,E,true(。

c。让len为len+1。

  1. 是否执行?Set(O,"length",len,true(
  2. 返回len

如果没有通过任何操作,步骤6根本不会重复。

最新更新