僅IE不支持setTimeout/setInterval函數(shù)的第三個以上參數(shù)
setTimeout(function(obj){
alert(obj.a);
}, 2000, {a:1});
即傳了第三個參數(shù),第三個參數(shù)將作為回調(diào)函數(shù)的參數(shù)obj傳入。在非IE瀏覽器中都彈出了1。這樣有個好處,即解決了回調(diào)函數(shù)的執(zhí)行上下文,比如要調(diào)用某個對象的某個方法,即可以通過參數(shù)把該對象傳進(jìn)去。
setTimeout(function(obj){
obj.method();
}, 2000, obj);
當(dāng)然,你還可以傳多個參數(shù)給回調(diào)函數(shù),如下
setTimeout(function(a, b){
alert(a);
alert(b);
}, 2000, 1,2);
這次我們傳了兩個參數(shù)1,2給回調(diào)函數(shù),F(xiàn)irefox/Safari/Chrome/Opera中依次彈出了1,2。只要你愿意還可以傳更多。
雖然除了IE不支持第三個參數(shù)外,但Firefox和Safari/Chrome/Opera之間還是有區(qū)別的
setTimeout(function(){
alert(arguments.length);
}, 2000, 1,2);
傳了兩個參數(shù)1,2給回調(diào)函數(shù),然后alert出實參的長度
Firefox : 3
Safari/Chrome/Opera : 2
奇怪吧,明明傳的是兩個參數(shù),但Firefox中彈出的卻是3。如果輸出第三個參數(shù)會發(fā)現(xiàn)它是一個數(shù)字,有時還是負(fù)數(shù)。
關(guān):
https://developer.mozilla.org/en/DOM/window.setTimeout
http://msdn.microsoft.com/en-us/library/ms536753%28v=vs.85%29.aspx
//解決IE下setTimeout傳參數(shù)的bug
//解決IE下setTimeout傳參數(shù)的bug
if(!+[1,]) {
(function(overrideFun){
window.setTimeout = overrideFun(window.setTimeout);
window.setInterval = overrideFun(window.setInterval);
})(
function(originalFun){
return function(code, delay){
var args = [].slice.call(arguments, 2);
return originalFun(
function(){
if (typeof code == 'string') {
eval(code);
}
else {
code.apply(this, args);
}
},
delay
)
}
}
);
}
相關(guān)文章
array.prototype.silce.call 理解分析
在很多框架中與遇到這個方法,但一時沒去研究這個方法,只要前段時間被問到,尷尬無奈收場。所以學(xué)習(xí)就要追根究底的精神,廢話少說,說正題。2010-04-04TypeScript聯(lián)合類型,交叉類型和類型保護(hù)
這篇文章主要介紹了TypeScript聯(lián)合類型,交叉類型和類型保護(hù),聯(lián)合類型就是定義一些類型,定義的變量只需要滿足任意一種類型即可,交叉類型就是需要滿足所有類型,交叉類型使用,更多內(nèi)容我們來看看下面文章詳細(xì)內(nèi)容吧2021-12-12JavaScript使用箭頭函數(shù)實現(xiàn)優(yōu)化代碼
在JavaScript的編程世界里,我們時常被普通函數(shù)的冗長寫法所困擾,每次都需要寫function關(guān)鍵字,有時候還要明確地寫return語句,下面我們就來看看如何利用箭頭函數(shù)優(yōu)化這些繁瑣的代碼吧2023-11-11Echart結(jié)合圓形實現(xiàn)儀表盤的繪制詳解
EChart開源來自百度商業(yè)前端數(shù)據(jù)可視化團(tuán)隊,基于html5?Canvas,是一個純Javascript圖表庫,提供直觀,生動,可交互,可個性化定制的數(shù)據(jù)可視化圖表。本文將利用EChart實現(xiàn)儀表盤的繪制,感興趣的可以學(xué)習(xí)一下2022-03-03Bootstrap優(yōu)化站點資源、響應(yīng)式圖片、傳送帶使用詳解3
這篇文章主要介紹了Bootstrap優(yōu)化站點資源、完成響應(yīng)式圖片、讓傳送帶支持手勢的相關(guān)知識,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-10-10