最近一次的開發(fā)中遇到了IE下setTimeout傳參數(shù)的問題,在IE下setTimeout是不會傳參數(shù)的,例如下面的代碼,在IE下就不會傳入a,b兩個(gè)參數(shù)
setTimeout(function(a,b){
alert(a+b);
},1000,'hello,','world!');
在實(shí)際項(xiàng)目中我們有些需求必須傳入?yún)?shù)要setTimeout的function進(jìn)行處理,那么我們就需要利用js的call及其apply的方法,來解決IE下的setTimeout傳參bug:
if(!+[1,]) {
(function(f){
window.setTimeout =f(window.setTimeout);
window.setInterval =f(window.setInterval);
})(function(f){
return function(c,t){
var a=[].slice.call(arguments,2);
return f(function(){
c.apply(this,a)},t)
}
});
}