课程
/前端开发
/JavaScript
/JavaScript深入浅出
for (var i = 0; i < 10; i++) { setTimeout(function() {console.log(i); }, 100 * i);}
2015-12-29
源自:JavaScript深入浅出 3-1
正在回答
var ==
10个10,这个涉及到了函数的闭包和作用域,这里实际上只有一个i,循环的10个函数是共享一个i的引用,如果想输出0到9的话只需将var 改成 let 即可,这样就在函数每次执行的时候创建了一个闭包
10啊
你可以这样理解,先是for(vari= 0; i< 10; i++){}然后console.log(i)执行十次
,毕竟console.log(i)是延迟执行的,它也是个函数,只有当它执行的时候参数才开始传入的
for (var i=0; i<5; i++){
(function(i){
setTimeout(function(){
console.log(i);
},i*1000);
})(i);
}
在执行setTimeout的时候,上面的i已经初始化完成了,此时i=10,所以。。。。。
一只特立独行的doge
在控制台输出10个10;
不是输出0到9;
一别经年 提问者
举报
由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握
24 回答以下这段代码运行结果不对
3 回答代码怎么执行的结果不是一样的,奇怪,求解
2 回答这段代码是什么意思啊
8 回答这段代码怎麽运行的啊?
3 回答这段 是否加join()似乎对结果没什么影响 什么呢