【JavaScript】關於 setInterval() 調用函數方法的一次實驗

實驗主題:

setInterval() 方法是 JS 中比較經常使用的一個方法。setInterval() 方法能夠按照指定的週期 ( 毫秒 ) 來調用函數方法或計算表達式。javascript

setInterval() 方法會不停地調用函數,直到 clearInterval() 被調用或窗口關閉。由 setInterval() 返回的 ID 值可用做 clearInterval() 方法的參數。java

注:1000 毫秒 = 1秒函數

setInterval() 語法:測試

setInterval(code, millisec, lang)
參數 描述
code 必須。要調用的函數或要執行的代碼串。
millisec 必須。週期性的執行或調用 code 之間的時間間隔。
lang 可選。JScript | VBScript | JavaScript

setInterval() 返回值:number值,是一個能夠傳遞給 Window.clearInterval() 從而取消對 code 的週期性執行的值。測試代碼:spa

var id = setInterval("foo1()",100);
alert(typeof(id));

setInterval() 做爲 JavaScript 的一個計時事件,可使代碼在一個設定的時間內反覆的執行屢次,而不是在函數被調用後當即執行,這就是咱們的計時事件。JavaScript 的另外一個計時事件是 setTimeout(),他們兩個都是 HTML DOM Window 對象的方法。code

由於是 Window 的對象方法,因此加前綴 " window. " 對調用沒有什麼影響。另外,clearInterval() 也是 Window 的對象方法。對象

實驗測試:

var foo1 = new Function("return alert('!!!')");//正常運行,並且剛開始時不會執行
setInterval(foo1,2000);//注意:Function不能寫成function
var foo2 = new Function("alert('!!!')");//正常運行,並且剛開始時不會執行
setInterval(foo2,2000);
var foo3 = new Function(return alert('!!!'));//錯誤,拋出異常:"Uncaught SyntaxError: Unexpected token return"
setInterval(foo3,2000);
var foo4 = new Function(alert('!!!'));//剛開始運行一次,沒有異常
setInterval(foo4,2000);
setInterval(function(){alert("!!!")},2000);//正常運行,並且剛開始時不會執行
setInterval(foo5(),2000);//剛開始運行一次,沒有異常,執行一次的緣由多是載入過程當中執行
function foo5(){
	alert("!!!");
};
function foo6(){
	alert("!!!");
};
setInterval(foo3(),2000);//註釋掉這裏不會運行函數,因此並非載入腳本時自動執行的函數,而是被setInterval()調用執行了一次
setInterval("foo7()",2000);//正常運行,並且剛開始時不會執行
function foo7(){
	alert("!!!");
};
function foo8(){//正常運行,並且剛開始時不會執行
	alert("!!!");
};
setInterval("foo8()",2000);
setInterval("foo9",2000);
function foo9{//錯誤,拋出異常:"Uncaught SyntaxError: Unexpected token {"
	alert("!!!");
};
function foo10(){//不會執行調用函數
	alert("!!!");
};
setInterval("foo10",2000);
function foo11(){//正常運行,並且剛開始時不會執行
	alert("!!!");
};
setInterval(foo11,2000);

實驗總結:

要想經過 setInterval() 方法正常調用執行函數,有三種方法:token

  • 經過 new 建立一個函數字面量,如 foo1
  • 聲明一個函數,而後經過字符串的形式調用,如 foo7
  • 若是函數沒有參數,則能夠 foo11 的形式調用函數

附:若是須要中止計時事件,則須要這樣:事件

var id = setInterval("foo1()",100);
function foo2(){
	clearInterval(id);
}

中止計時事件須要給出被中止的事件的 id。ip

相關文章
相關標籤/搜索