SetTimeout()函数的奇怪输出

时间:2018-04-02 09:28:33

标签: javascript html closures settimeout

我遇到了以下问题,我根本无法理解,它是如何获得输出的。谁能解释一下?

<html>
<head></head>
<body>

<script>
const arr = [10, 12, 15, 21];
for (var i = 0; i < arr.length; i++) {
  setTimeout(function() {
console.log('Index: ' + i + ', element: ' + arr[i]);
  }, 3000);
}
</script>

</body>
</html>

预期:

Index: 0, element: 10
Index: 1, element: 12
Index: 2, element: 15
Index: 3, element: 21

输出

Index: 4, element: undefined (4 times)

这没有任何意义,这是输出。

0 个答案:

没有答案