为什么这个函数变量有初始值?

时间:2017-12-26 19:39:18

标签: javascript arrays reactjs

当我在此函数中提前记录arr时,它具有值(如下所示)。我希望它打印[[null,null],[null,null]];相反,它会打印一旦此函数完成后会产生的arr值。

  updateBounds() {
    let arr = [Array(2), Array(2)];
    console.log('initial value')
    console.log(arr);
    arr[0][0] = this.state.homePoint.geometry.coordinates[0];
    arr[1][0] = this.state.homePoint.geometry.coordinates[0];
    arr[0][1] = this.state.homePoint.geometry.coordinates[1];
    arr[1][1] = this.state.homePoint.geometry.coordinates[1];
    this.state.points.forEach(p => {
      if (p.geometry) {
        if (p.geometry.coordinates) {
          arr[0][0] = Math.min(p.geometry.coordinates[0], arr[0][0]);
          arr[1][0] = Math.max(p.geometry.coordinates[0], arr[1][0]);
          arr[0][1] = Math.min(p.geometry.coordinates[1], arr[0][1]);
          arr[1][1] = Math.max(p.geometry.coordinates[1], arr[1][1]);
        }
      }
    });
    this.setState({bounds: arr});
  }

结果控制台输出:

initial value
App.js:444 (2) [Array(2), Array(2)]
0: (2) [-122.438227, 37.742017]
1: (2) [-122.40766, 37.784995]
length: 2
__proto__: Array(0)

2 个答案:

答案 0 :(得分:4)

这确实有些令人惊讶......问题在于,当您致电log时,浏览器会记录对象而不记录其内容(在日志调用时)。

如果您想在通话时看到对象内容,请改用console.log(JSON.stringify(x))

答案 1 :(得分:1)

Array.splice()返回包含已删除元素的数组。如果仅删除一个元素,则返回一个元素的数组。 如果没有删除任何元素,则返回一个空数组。