电竞比分网-中国电竞赛事及体育赛事平台

分享

給定時(shí)器settimeout、setInterval調(diào)用傳遞參數(shù) (javascript)

 zhanghuan 2008-05-29

無論是window.setTimeout還是window.setInterval,在使用函數(shù)名作為調(diào)用句柄時(shí)都不能帶參數(shù),而在

許多場合必須要帶參數(shù),這就需要想方法解決。例如對于函數(shù)hello(_name),它用于針對用戶名顯示歡

迎信息:
var userName="jack";
//根據(jù)用戶名顯示歡迎信息
function hello(_name){
      alert("hello,"+_name);
}
這時(shí),如果企圖使用以下語句來使hello函數(shù)延遲3秒執(zhí)行是不可行的:
window.setTimeout(hello(userName),3000);
這將使hello函數(shù)立即執(zhí)行,并將返回值作為調(diào)用句柄傳遞給setTimeout函數(shù),其結(jié)果并不是程序需要的

。而使用字符串形式可以達(dá)到想要的結(jié)果:
window.setTimeout("hello(userName)",3000);
這里的字符串是一段JavaScript代碼,其中的userName表示的是變量。但這種寫法不夠直觀,而且有些

場合必須使用函數(shù)名,下面用一個(gè)小技巧來實(shí)現(xiàn)帶參數(shù)函數(shù)的調(diào)用:
<script language="JavaScript" type="text/javascript">
<!--
var userName="jack";
//根據(jù)用戶名顯示歡迎信息
function hello(_name){
       alert("hello,"+_name);
}
//創(chuàng)建一個(gè)函數(shù),用于返回一個(gè)無參數(shù)函數(shù)
function _hello(_name){
       return function(){
             hello(_name);
       }
}
window.setTimeout(_hello(userName),3000);
//-->
</script>
這里定義了一個(gè)函數(shù)_hello,用于接收一個(gè)參數(shù),并返回一個(gè)不帶參數(shù)的函數(shù),在這個(gè)函數(shù)內(nèi)部使用了

外部函數(shù)的參數(shù),從而對其調(diào)用,不需要使用參數(shù)。在 window.setTimeout函數(shù)中,使用_hello

(userName)來返回一個(gè)不帶參數(shù)的11:01 2007-1-5函數(shù)句柄,從而實(shí)現(xiàn)了參數(shù)傳遞的功能。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多