Kri*_*hna 5 javascript closures var let
我知道let具有块作用域,而var具有功能作用域。但是我不明白在这种情况下,如何使用let解决问题
const arr = [1,2,3,4];
for (var i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log(arr[i])
}, 1000);
} // Prints undefined 5 times
const arr = [1,2,3,4];
for (let i = 0; i < arr.length; i++) {
setTimeout(function() {
console.log(arr[i])
}, 1000);
} // Prints all the values correctly
Run Code Online (Sandbox Code Playgroud)
首先,输出将是四次而不是五次(如您的评论中所述)。我将你的代码粘贴到 Babel REPL 中,这就是我得到的,
"use strict";
var arr = [1, 2, 3, 4];
var _loop = function _loop(i) {
setTimeout(function () {
console.log(arr[i]);
}, 1000);
};
for (var i = 0; i < arr.length; i++) {
_loop(i);
}
Run Code Online (Sandbox Code Playgroud)
现在你明白 let 内部是如何工作的了吗?:-)
| 归档时间: |
|
| 查看次数: |
864 次 |
| 最近记录: |