setTimeout的范围

| 假设我有这样的JS代码
var num = 0;

function foo(input){
   num = input;

}


function bar(){
  setTimeout(foo(2), 100);//1

  setTimeout(function(){foo(5);},100);//2

  alert(\"num =\" + num);//3

}
使用1和3 ..... 2和3的结果是什么...我有结果,但无法理解其行为...通过详细解释将不胜感激...     
已邀请:
这不是“范围”的问题,而是时间的问题。 将
num
设置为2会有副作用。side2 executed立即执行,结果(垃圾)传递给
setTimeout
。 (即,
foo(2)
不能作为超时回调运行。) 大约100毫秒后将调用ѭ5。匿名函数充当回调,依次调用
foo(5)
,这将给
num
分配5产生副作用。 立即提醒。该值将为\“ num = 2 \”,因为现在有
foo(2)
(正好在;-之前)运行,但回调中的
foo(5)
将在稍后运行(因此没有机会设置has1ѭ)。 快乐的编码。     

要回复问题请先登录注册