[英]scope of 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 foo(2)
現在被執行並且結果(垃圾)被傳遞到setTimeout
。 (也就是說, foo(2)
不在 超時回調中運行 。)
大約100毫秒后將調用foo(5)
。 匿名函數充當回調,依次調用foo(5)
,該副作用將給num
分配5。
警報現在 。 該值將為“ num = 2”,因為foo(2)
運行了 (很好;就在;-之前foo(5)
,但是回調中的foo(5)
將在稍后的某個時間運行(因此沒有機會設置num
)。
快樂的編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.