在将函数分配给另一个函数内的对象时,javascript中真正发生了什么?

时间:2017-11-10 08:23:28

标签: javascript

请查看此代码:

var arr = [];

var assignFunction = function() {
  for (var i = 0; i < 3; i++) {
    arr[i] = function() {
      console.log(i);
    }

  }
}

arr[0];
arr[1];
arr[2];

你会期望它会分配一个你可以调用/运行的函数,但不是。我正在寻找好的解释它真正在做什么。 arr[i]typeof函数,意味着它已被分配,但永远不会运行并打印任何内容到控制台。

1 个答案:

答案 0 :(得分:0)

&#34;问题&#34;

您需要致电assignFunction,将功能分配给arr以外的索引。之后,您可以使用arr[index]()执行函数。

为什么每个函数在控制台中打印3,您可以阅读this answer

工作示例

&#13;
&#13;
var arr = []

var assignFunction = function() {
  for (var i = 0; i < 3; i++) {
    arr[i] = function() {
      console.log(i)
    }
  }
}

assignFunction()

arr[0]()
arr[1]()
arr[2]()
&#13;
&#13;
&#13;