让我们考虑以下情况:
我有一个函数(Function1)调用另一个函数(Function2)并传递回调函数(Function3)
然后它立即有无限循环,为了逃避回调中的机制,是否会调用回调函数?如何到达console.log('reached here');
?
var IamTrue = true;
function Function1() {
Function2(Function3);
while(IamTrue){ }
console.log('reached here');
}
function Function2(f3) {
setTimeout(f3, 500);
}
function Function3() {
IamTrue = false;
}
答案 0 :(得分:2)
JavaScript使用单线程运行循环来执行代码;在代码返回的那一刻,它可以安排事件处理,延迟代码执行,AJAX响应等等。
然而,Function1
中的代码永远不会结束,因此JavaScript引擎永远不会有机会安排Function2
的执行,因此"没有任何事情发生"。