关于下列代码输出
for(var i=1;i<=5;i++){
setTimeout(function () {
console.log(i)
},i*1000)
}
的解释
首先,var定义了一个全局变量,执行步骤
1.for循环初始化,此时需要注意的是从第一个到第五个setTimeout的时间间隔已经被指定为1s,2s,3s,4s,5s,而不是同时为6s,如果同时是6s,则应该是同时输出5个6,而不是隔一秒输出一个。
2.同时执行五个计时器,第一秒,第一个计时器输出i=6,第二秒输出i=6,……,第五秒输出i=6
然后就是找资料的时候碰见了一道题目,感觉还是考逻辑的一道题目
function fun(n,o) {
console.log(o)
return {
fun:function(m){
return fun(m,n);
}
};
}
var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,?
var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?
var c = fun(0).fun(1); c.fun(2); c.fun(3);//undefined,?,?,?
//问:三行a,b,c的输出分别是什么
答案在这里:---->
//a: undefined,0,0,0
//b: undefined,0,1,2
//c: undefined,0,1,1