Javascript Console.log()和settimeout(fn,0)
关于我在Chrome控制台中运行的以下代码,我有几个问题(我强调了每个循环之间的差异)。代码的目的是立即打印偶数,然后按顺序打印奇数(据我所知,堆栈是清晰的,Chrome开始在事件队列中运行)Javascript Console.log()和settimeout(fn,0),javascript,asynchronous,google-chrome-devtools,Javascript,Asynchronous,Google Chrome Devtools,关于我在Chrome控制台中运行的以下代码,我有几个问题(我强调了每个循环之间的差异)。代码的目的是立即打印偶数,然后按顺序打印奇数(据我所知,堆栈是清晰的,Chrome开始在事件队列中运行) 对于第一个循环,为什么它显示未定义的?为什么需要使用(IIFE)来绑定i的当前值 例如: for( var i = 0 ; i < 5 ; i++) { if(i % 2 == 0) { console.log(i); } else { (functi
未定义的?为什么需要使用(IIFE)来绑定i
的当前值
例如:
for( var i = 0 ; i < 5 ; i++) {
if(i % 2 == 0) {
console.log(i);
} else {
(function(_i) {
setTimeout(function() { console.log(_i); }, 0);
})(i);
}
}
for(变量i=0;i<5;i++){
如果(i%2==0){
控制台日志(i);
}否则{
(功能(i){
setTimeout(函数(){console.log(_i);},0);
})(i) );
}
}
您需要使用(IIFE)来绑定i的当前值
例如:
for( var i = 0 ; i < 5 ; i++) {
if(i % 2 == 0) {
console.log(i);
} else {
(function(_i) {
setTimeout(function() { console.log(_i); }, 0);
})(i);
}
}
for(变量i=0;i<5;i++){
如果(i%2==0){
控制台日志(i);
}否则{
(功能(i){
setTimeout(函数(){console.log(_i);},0);
})(i) );
}
}
对于第一个循环,为什么它显示未定义?为什么会有小
对于第一个循环,为什么它显示未定义?为什么会有小的注意,所有这些代码都会遇到这个常见问题注意,所有这些代码都会遇到这个常见问题有趣的是,我在for循环结束之前将其设置在上限之上。我从来不知道。我也不知道这个控制台。我见过很多未定义的东西,但从来都不知道为什么。谢谢。有趣的是,在for循环结束之前,我已经超过了设置的上限。我从来不知道。我也不知道这个控制台。我见过很多未定义的东西,但从来都不知道为什么。谢谢