zoukankan      html  css  js  c++  java
  • 仅IE不支持setTimeout/setInterval函数的第三个以上参数

    setTimeout/setInterval,这两个函数相信前端开发同学都很熟悉。它们在非IE(6-9)浏览器中还可以如下使用

    setTimeout(function(obj){
    	alert(obj.a);
    }, 2000, {a:1});
    

    即传了第三个参数,第三个参数将作为回调函数的参数obj传入。在非IE浏览器中都弹出了1。这样有个好处,即解决了回调函数的执行上下文,比如要调用某个对象的某个方法,即可以通过参数把该对象传进去。

    setTimeout(function(obj){
    	obj.method();
    }, 2000, obj);
    

    当然,你还可以传多个参数给回调函数,如下

    setTimeout(function(a, b){
    	alert(a);
    	alert(b);
    }, 2000, 1,2);
    

    这次我们传了两个参数1,2给回调函数,Firefox/Safari/Chrome/Opera中依次弹出了1,2。只要你愿意还可以传更多。


    虽然除了IE不支持第三个参数外,但Firefox和Safari/Chrome/Opera之间还是有区别的

    setTimeout(function(){
    	alert(arguments.length);
    }, 2000, 1,2);
    

    传了两个参数1,2给回调函数,然后alert出实参的长度

    Firefox : 3

    Safari/Chrome/Opera : 2

    奇怪吧,明明传的是两个参数,但Firefox中弹出的却是3。如果输出第三个参数会发现它是一个数字,有时还是负数。


    相关:

    http://www.w3.org/TR/Window/

    https://developer.mozilla.org/en/DOM/window.setTimeout

    http://msdn.microsoft.com/en-us/library/ms536753%28v=vs.85%29.aspx 

  • 相关阅读:
    leetcode931
    leetcode1289
    leetcode1286
    poj Meteor Shower
    noip杂题题解
    noip2007部分题
    NOIP Mayan游戏
    某模拟题题解
    codevs 1423 骑士
    noip 邮票面值设计
  • 原文地址:https://www.cnblogs.com/snandy/p/2050315.html
Copyright © 2011-2022 走看看