簡體   English   中英

setTimeout的范圍

[英]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的結果是什么...我有結果,但無法理解行為...通過詳細解釋將不勝感激...

這不是“范圍”的問題,而是時間的問題。

  1. 將具有設定的副作用num為2 foo(2) 現在被執行並且結果(垃圾)被傳遞到setTimeout (也就是說, foo(2) 不在 超時回調中運行 。)

  2. 大約100毫秒后將調用foo(5) 匿名函數充當回調,依次調用foo(5) ,該副作用將給num分配5。

  3. 警報現在 該值將為“ num = 2”,因為foo(2)運行 (很好;就在;-之前foo(5) ,但是回調中的foo(5)在稍后的某個時間運行(因此沒有機會設置num )。

快樂的編碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM