We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Test1
for (var i = 0; i < 5; i++) { // 注意是 i < 5, 不是 <= 5 setTimeout(function(i) { console.log(i); }, 1000); } // 同时打出5个5
Test2, 现在把 setTimeout 的第二个参数改一下
setTimeout
for (var i = 1; i < 5; i++) { setTimeout(function() { console.log(i) }, i * 1000) } // 以一秒的频率连续输出五个5!
for(var i = 0;i<5;i ++) { (function(i){ setTimeout(function() { console.log(i) }, i * 1000); })(i); }
for(let i = 0;i<5;i++) { setTimeout(function() { console.log(i); }, i * 1000); }
for 循环头部的 let 声明还会有一个特殊的行为。这个行为指出变量在循环过程中不止被声明一次,每次迭代都会声明。随后的每个迭代都会使用上一个迭代结束时的值来初始化这个变量。
for
let
for (var i=0; i<5; i++) { setTimeout( function(i) { console.log(i); }.bind(null,i), i*1000 ); }
for (var i=0; i<5; i++) { setTimeout( function(i) { console.log(i); }, i*1000, i ); }
var loop = function (i) { setTimeout(function() { console.log(i); }, i*1000); }; for (var 0 = 1;i < 5; i++) { loop(i); }
var test = function () { var arr = [] for(var i = 0; i < 5; i++){ arr.push(function () { return i*i }) } return arr } var test1 = test() console.log(test1[0]()) console.log(test1[1]()) console.log(test1[2]())
上面的代码在 test 函数返回一个函数数组 arr, 内部的for循环里,为 arr 数组 push 了5个函数,均为:
test
arr
push
function () { return i*i }
我们期望这里的 test1 函数数组中每个函数执行的时候,能够得到在循环时的 i 值,但是显然没能如我们所料。这是为什么呢?
test1
i
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Test1
Test2, 现在把
setTimeout
的第二个参数改一下二、如何要它以一秒的频率分别输出 01234。
2.1、for 循环体为立即执行函数 IIFE
2.2、使用 ES6 中 let 关键词
for
循环头部的let
声明还会有一个特殊的行为。这个行为指出变量在循环过程中不止被声明一次,每次迭代都会声明。随后的每个迭代都会使用上一个迭代结束时的值来初始化这个变量。2.3、bind 绑定
2.4、使用 setTimeout 的第三个参数
2.5、把 setTimeout 用一个方法抽出来形成闭包
三、延伸
上面的代码在
test
函数返回一个函数数组arr
, 内部的for循环里,为arr
数组push
了5个函数,均为:我们期望这里的
test1
函数数组中每个函数执行的时候,能够得到在循环时的i
值,但是显然没能如我们所料。这是为什么呢?The text was updated successfully, but these errors were encountered: