最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

精解window.setTimeout()&window.setInterval()使用方式與參數(shù)傳遞問題!

 更新時(shí)間:2007年11月23日 16:58:39   作者:  
在使用JScript的時(shí)候,我們有時(shí)需要間隔的執(zhí)行一個(gè)方法,比如用來產(chǎn)生網(wǎng)頁UI動(dòng)畫特效啥的。這是我們常常會(huì)使用方法setInterval或setTimeout,但是由于這兩個(gè)方法是由腳本宿主模擬出來的Timer線程,在通過其調(diào)用我們的方法是不能為其傳遞參數(shù)。

    我們常用的使用場(chǎng)景是: 

復(fù)制代碼 代碼如下:

window.setTimeout("delayRun()", n); 
window.setInterval("intervalRun()", n); 
window.setTimeout(delayRun, n); 
window.setInterval(intervalRun, n); 

    顯然強(qiáng)行代參數(shù)的調(diào)用: window.setTimeout("delayRun(param)", n); 
復(fù)制代碼 代碼如下:

window.setInterval("intervalRun(param)", n); 
window.setTimeout(delayRun(param), n); 
window.setInterval(intervalRun(param), n); 

    都是錯(cuò)誤的,因?yàn)閟tring literals形式的方法調(diào)用,param必須是全局變量(即window對(duì)象上的變量)才行;而function pointer形式的調(diào)用,完全錯(cuò)誤了,這是把函數(shù)的返回值當(dāng)成了setTimeout/setInterval函數(shù)的參數(shù)了,完全不是我們所望的事情。

    解決這個(gè)問題的辦法可以使用匿名函數(shù)包裝的方式,在以下scenario中我們這么做: 
復(fù)制代碼 代碼如下:

function foo() 

    var param = 100; 
    window.setInterval(function() 
    { 
        intervalRun(param); 
    }, 888); 


function interalRun(times) 

    // todo: depend on times parameter 

    這樣一來,就可以不再依賴于全局變量向delayRun/intervalRun函數(shù)中傳遞參數(shù),畢竟當(dāng)頁面中的全局變量多了以后,會(huì)給腳本的開發(fā)、調(diào)試和管理等帶來極大的puzzle。

相關(guān)文章

最新評(píng)論

壤塘县| 临夏县| 来宾市| 新邵县| 独山县| 桑植县| 南充市| 北碚区| 鄂托克前旗| 横山县| 合川市| 辽源市| 新宁县| 广汉市| 大安市| 常熟市| 屯昌县| 韩城市| 普洱| 新晃| 九江市| 张家港市| 马关县| 阿拉善右旗| 普兰店市| 南通市| 永昌县| 阳高县| 陇西县| 龙口市| 曲阳县| 石河子市| 正镶白旗| 尼玛县| 肇州县| 渭南市| 庐江县| 闵行区| 葵青区| 兴化市| 卫辉市|