有人可以解释下面的代码执行是如何工作的吗?我创建了两个涉及回调函数的场景,一个在回调中使用console.log,另一个使用alert,我想知道导致两者之间执行差异的原因。
在第一个例子中,我在回调函数中使用console.log()。见下文。
var thor = function(){
console.log('I am THOR!');
};
var otherFunction = function(callback){
for (var i = 0; i < 11; i++){
console.log(i);
}
callback();
};
otherFunction(thor);
以下是结果:
0
1
2
3
4
5
6
7
8
9
10
"I am THOR!"
这是第二个例子。唯一改变的是&#39; console.log&#39;已被“警报”取代在&#39; thor&#39;功能。
var thor = function(){
alert('I am THOR!');
};
var otherFunction = function(callback){
for (var i = 0; i < 11; i++){
console.log(i);
}
callback();
};
otherFunction(thor);
...结果是:
<alert>
0
1
9
10
8
7
6
5
4
3
2
for循环中的数字以随机顺序记录,并在记录之前弹出警告框。我想知道导致这种差异的原因以及为什么在回调中调用alert时它首先发生而不是在for循环完成记录数字之后。
感谢您的帮助!
答案 0 :(得分:0)
当我在chrome中测试时,警报响起,如果你在回调中添加了console.log,你会看到它在数字之后出现。执行速度可能会产生误导,因为显然整个过程都会在不到一秒的时间内结束。
小提琴:http://jsfiddle.net/97vLmfrq/
var thor = function(){
console.log("in callback");
alert('I am THOR!');
};
var otherFunction = function(callback){
for (var i = 0; i < 11; i++){
console.log(i);
}
callback();
};
otherFunction(thor);