以下 JavaScript 代码,在浏览器中运行的结果是
function foo(){ console.log('first'); setTimeout(function (){ console.log('second'); },5); } for(var i=0;i< 4399999999;i++) { foo(); }
以下 JavaScript 代码,在浏览器中运行的结果是
function foo(){ console.log('first'); setTimeout(function (){ console.log('second'); },5); } for(var i=0;i< 4399999999;i++) { foo(); }
first,second,first,second..依次顺序输出
首先全部输出first,然后全部输出second
first,second无顺序输出
首先输出first,超出5ms输出所有second,最后输出余下的first
当我们调用一个方法的时候,js会生成一个与这个方法对应的执行环境(context),又叫执行上下文。这个执行环境中存在着这个方法的私有作用域,上层作用域的指向,方法的参数,这个作用域中定义的变量以及这个作用域的this对象。 而当一系列方法被依次调用的时候,因为js是单线程的,同一时间只能执行一个方法,于是这些方法被排队在一个单独的地方。这个地方被称为执行栈。