1. 程式人生 > >幾個例子弄懂JS 的setTimeout的運行方式

幾個例子弄懂JS 的setTimeout的運行方式

-a highlight margin java p s .com cti x11 on()

function test() { var a = 1; setTimeout(function() { alert(a); a = 5; }, 1000); } test(); alert(0);//前面的兩個setTimeout延遲了 所以先執行這個

結果:先彈出0,然後彈出1。

例子2

function test() { var a = 1; setTimeout(function() { alert(a); a =
5; }, 1000); lert(a); } test(); alert(0);


結果:先彈出1,然後彈出0,最後彈出1 。

先執行test()裏的alert(),因為function此時還未執行,因此,a任然為1.因為function還在被延遲著,因此,執行了alert(0),最後到時間了,執行了alert(a),因為前面a已經變為1了,所以,最後彈出的是1.

例子:3:

function test() { var a = 1; setTimeout(function() { alert(a); a = 5
; }, 1000); a = 19; } test(); alert(0);//前面的alert因為setTimeout延遲了 所以先執行這個。

結果:會先彈出0,然後彈出19.

延遲了function() {
alert(a);
a = 5;
}

但是a=19還是會照常執行,不是等到延遲結束。所以,執行這個被延遲函數的時候,a=19了!

例子4

function test() { var a = 1; setTimeout(function() {
  alert(a);   a = 5; }, 1000); a = 19; setTimeout(function() { alert(a); a = 4; }, 3000); } test(); alert(0);//前面的兩個setTimeout延遲了 所以先執行這個


結果:會先彈出0,然後彈出19,最後彈出5.

附加解釋下全局變量和局部變量!

全局變量:在函數之外定義,或在函數內賦值但前面沒加 var 關鍵字的,都是全局變量

局部變量:定義在函數之內,且前面有 var 關鍵字的變量

幾個例子弄懂JS 的setTimeout的運行方式