js中那些要注意的面试坑
var i = 0;
for(var n = 0; n < 100; n++){
window.setTimeout(function(){
i++;
},1);
}
console.log(i++ | 2)// 2
这里主要理解的是++运算符的使用,放在数字后表示后增,即先执行再+1,这里就是先执行console.log(i)之后i再加1
同理如下
function Foo() {
var i = 0;
return function() {
console.log(i++);
}
}
var f1 = Foo(),
f2 = Foo();
f1(); // 0
f1(); // 1
f2(); // 0
var f1 = Foo( )可以看做是var f1 = function( ){ console.log(i++)}
如实现以下 需把遍历i提升全局变量
f1(); // 0
f1(); // 1
f2(); // 2