僅IE不支持setTimeout/setInterval函數(shù)的第三個(gè)以上參數(shù)
setTimeout(function(obj){
alert(obj.a);
}, 2000, {a:1});
即傳了第三個(gè)參數(shù),第三個(gè)參數(shù)將作為回調(diào)函數(shù)的參數(shù)obj傳入。在非IE瀏覽器中都彈出了1。這樣有個(gè)好處,即解決了回調(diào)函數(shù)的執(zhí)行上下文,比如要調(diào)用某個(gè)對(duì)象的某個(gè)方法,即可以通過(guò)參數(shù)把該對(duì)象傳進(jìn)去。
setTimeout(function(obj){
obj.method();
}, 2000, obj);
當(dāng)然,你還可以傳多個(gè)參數(shù)給回調(diào)函數(shù),如下
setTimeout(function(a, b){
alert(a);
alert(b);
}, 2000, 1,2);
這次我們傳了兩個(gè)參數(shù)1,2給回調(diào)函數(shù),F(xiàn)irefox/Safari/Chrome/Opera中依次彈出了1,2。只要你愿意還可以傳更多。
雖然除了IE不支持第三個(gè)參數(shù)外,但Firefox和Safari/Chrome/Opera之間還是有區(qū)別的
setTimeout(function(){
alert(arguments.length);
}, 2000, 1,2);
傳了兩個(gè)參數(shù)1,2給回調(diào)函數(shù),然后alert出實(shí)參的長(zhǎng)度
Firefox : 3
Safari/Chrome/Opera : 2
奇怪吧,明明傳的是兩個(gè)參數(shù),但Firefox中彈出的卻是3。如果輸出第三個(gè)參數(shù)會(huì)發(fā)現(xiàn)它是一個(gè)數(shù)字,有時(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)文章
JS與HTML結(jié)合實(shí)現(xiàn)流程進(jìn)度展示條思路詳解
基于js與html相結(jié)合實(shí)現(xiàn)的流程進(jìn)度展示條,非常實(shí)用,在各大網(wǎng)站都可以用到,下面小編給大家?guī)?lái)了JS與HTML結(jié)合實(shí)現(xiàn)流程進(jìn)度展示條思路詳解,需要的朋友參考下吧2017-09-09
JavaScript中防抖和節(jié)流的原理和區(qū)別詳解
JavaScript 中,防抖和節(jié)流是一種用于優(yōu)化事件處理函數(shù)調(diào)用頻率的技術(shù),防抖和節(jié)流的目的都是為了避免頻繁地觸發(fā)事件處理函數(shù),從而減少瀏覽器和服務(wù)器的負(fù)擔(dān),本文將給大家介紹一下JavaScript中防抖和節(jié)流的原理和區(qū)別,需要的朋友可以參考下2023-09-09
js實(shí)現(xiàn)的在本地預(yù)覽圖片功能示例
這篇文章主要介紹了js實(shí)現(xiàn)的在本地預(yù)覽圖片功能,結(jié)合實(shí)例形式分析了JavaScript兼容移動(dòng)web與IE瀏覽器的圖片預(yù)覽功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-11-11
原生js實(shí)現(xiàn)查找/添加/刪除/指定元素的class
查找、添加、刪除、指定元素的class使用原生js實(shí)現(xiàn)不可思議吧,感興趣的朋友可以參考下哈,希望可以幫助到你2013-04-04
js關(guān)閉當(dāng)前頁(yè)面(窗口)的幾種方式總結(jié)
js關(guān)閉當(dāng)前頁(yè)面(窗口)的幾種方式總結(jié),需要的朋友可以參考一下2013-03-03
js實(shí)現(xiàn)3D粒子酷炫動(dòng)態(tài)旋轉(zhuǎn)特效
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)3D粒子酷炫動(dòng)態(tài)旋轉(zhuǎn)特效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-09-09
詳解CocosCreator項(xiàng)目結(jié)構(gòu)機(jī)制
這篇文章主要介紹了詳解CocosCreator項(xiàng)目結(jié)構(gòu)機(jī)制,只有了解這些機(jī)制后,才能更好的進(jìn)行項(xiàng)目開(kāi)發(fā),避免潛在錯(cuò)誤,并且快速的除錯(cuò)2021-04-04

