变量赋值时链式推入方法导致的意外结果

Unexpected results from chaining push method in assignment of variable

本文关键字:意外 结果 方法 赋值 变量      更新时间:2023-09-26

这可能是非常明显的,但我在不同设置下使用Javascript时遇到过几次。

目前,我正在开发一个React应用程序,我正在向对象数组中添加一个对象。

下面的代码运行正常:

  handleCreate (site) {
    var sites = this.state.sites;
    sites.push(site);
    console.log(sites); // logs an array of objects, as expected
  }

  handleCreate (site) {
    var sites = this.state.sites.push(site);
    console.log(sites); // logs an integer, the number of objects in the array + 1
  }

为什么它们的工作方式不一样呢?第二组代码中发生了什么?

谢谢!

Array.prototype。Push返回数组的新长度。

在第二种情况下,你将返回的长度赋值给一个变量,然后记录该变量。

在第一种情况下,你对返回值不做任何事情(不将调用的结果分配给任何变量),然后你记录数组

Array.push()返回数组(MDN)的新长度。

当你做var sites = this.state.sites.push(site);时,你是在给站点分配站点的长度。从该点开始,其值为整型。