2010年8月27日 星期五

在JavaScript中,setTimeout 帶有參數的用法

這個問題起出覺得應該很簡單,但是不知道為什麼網路上有一堆討論這語法的相關文章

直到自己開始用了以後才發現問題一堆~有的人說的用法別人可以我卻不行

WHY?WHY?WHY?

在研究了一會兒以後發現 :

setTimeout 如果不須帶參數的寫法應該是 :

function Test(){
 alert("Hello");
}

setTimeout(Test,1000);

第一個引數是function名稱 但是不須+() ,後面則是希望延遲的秒數 1000 為一秒

setTimeout 如果須帶參數的寫法應該是 :

var i=0;


function Test(s){
 alert(s);
}

setTimeout(function(){Test(i);},1000);

因為 setTimeout 要求第一個參數 是函數 

因此 setTimeout(Test(i),1000); 這樣子的寫法是不行的

另外 在網路上也有看到 setTimeout('Test(i)',1000); 這種寫法

但是在很多情況 是行不通的 因此不推薦使用!!!

沒有留言:

張貼留言