Javascript 为什么这个闭包中的代码是整体执行的?

Javascript 为什么这个闭包中的代码是整体执行的?,javascript,Javascript,考虑这一结束: var getFunction = function(a, b, c) { return function () { console.log("A"); foo(a, b, c); // takes a couple of seconds console.log("B"); } } 当我像这样使用它的时候 var bar = getFunction(a, b, c); bar(); 在foo中完成计算后,它将

考虑这一结束:

var getFunction = function(a, b, c) {
    return function () {
        console.log("A");

        foo(a, b, c); // takes a couple of seconds

        console.log("B");
    }
}
当我像这样使用它的时候

var bar = getFunction(a, b, c);
bar();
在foo中完成计算后,它将立即输出“A”和“B”,而不是输出“A”,等待foo完成,然后输出“B”


为什么会这样?

问题在于,无论是登录控制台还是设置样式元素都不会阻止JS的执行。也就是说,首先函数将完全运行,然后控制台将显示排队的项目,或者更新元素的样式

document.body.style.background='red';
var d=新日期();
while(新日期()-d<1e3);//等一秒钟

document.body.style.background='绿色'旁注:在我的应用程序中,我试图设置一个等待光标。为了简单起见,我在示例中使用了“console.log”。您的意思是
foo
在A和B出现在控制台之前运行吗?
foo
可能是异步的……console.log“为了简单起见”可能是一个不好的示例,因为它在某些方面是异步的。您使用什么机制读取这些值?您的问题可能是javascript是单线程的,当长
foo
正在执行时,没有任何东西可以访问
A
的值
$(“*”).css(“光标”、“默认值”)而不是console.log-结果相同。非常感谢您的详细解释!不幸的是,我的投票没有资格。不过,我的问题已经解决了。谢谢