仅IE不支持setTimeout/setInterval函数的第三个以上参数

首先需要明确,setTimeoutsetInterval函数的第三个以上参数在所有现代浏览器和IE9以上版本均被支持。但是,在IE9及以下版本中,第三个以上参数并不会被当做函数的参数传递进去,而是被当做全局对象属性传递进去。

解决方法是在第三个以上参数中传入一个字符串类型的函数参数,在函数内通过eval方法执行即可。

以下是简单的示例说明:

  1. 传递一个字符串函数作为第三个参数:
setTimeout(function(a, b){
  console.log(a + b);
}, 1000, 1, 2);

在IE9及以下版本中,该代码会输出undefined,而在其他现代浏览器中将会输出3

为了兼容IE9及以下版本,我们可以改写为:

setTimeout("function(a, b){ console.log(a + b); } (1, 2)", 1000);

此时在所有浏览器上都将输出3

  1. 使用闭包传递参数:
(function(){
  var a = 1, b = 2;
  setTimeout(function(){
    console.log(a + b);
  }, 1000);
})();

该代码在所有现代浏览器和IE9及以上版本中均能正常工作。而在IE9及以下版本中,我们可以使用闭包来模拟传递参数:

(function(){
  var a = 1, b = 2;
  setTimeout(function(){
    eval("function(){ console.log(" + (a + b) + "); }");
  }, 1000);
})();

以上两种示例都是为了解决IE9及以下版本中setTimeoutsetInterval函数第三个以上参数的兼容性问题。建议在编写代码时使用第一种示例的方式,或者使用函数闭包方式传递参数。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:仅IE不支持setTimeout/setInterval函数的第三个以上参数 - Python技术站

(0)
上一篇 2023年6月11日
下一篇 2023年6月11日

相关文章

  • 详解javascript void(0)

    标题:详解javascript void(0) 简介 void(0) 是一个JavaScript语言中的操作符,这个方式可以用来执行一段代码却不返回任何值。通常使用 void(0) 可以防止页面被重定向,即不会跳转到新的页面。 使用方法 常见的使用场景: 在 href 属性中使用 void(0): <a href="javascript:vo…

    JavaScript 2023年5月28日
    00
  • JavaScript parseInt0.0000005打印5原理解析

    JavaScript的parseInt函数用来将一个字符串转换成一个整数。 在JavaScript中,当parseInt接收的参数是字符串时,它会从字符串的开头开始遍历,直到遇见第一个不合法的字符为止,并截取这个字符之前的所有数字字符。如果字符串中不包含数字字符,则返回NaN。parseInt也可以接收第二个参数(radix),表示使用的进制数,如2表示二进…

    JavaScript 2023年5月28日
    00
  • Js apply方法详解

    Javascript中apply()方法详解 Javascript中apply()方法是一种高阶函数,可以在调用函数时实现对函数作用域的绑定。apply()方法可以动态地将一个数组传递到一个函数,并使用该数组作为该函数的参数。 语法 apply()方法的语法如下所示: function.apply(thisArg, [argsArray]) thisArg:…

    JavaScript 2023年6月10日
    00
  • javascript判断元素存在和判断元素存在于实时的dom中的方法

    判断元素是否存在于DOM中是Javascript中经常遇到的一个问题,特别是在进行DOM操作和事件处理的时候。下面是两种常见的判断元素的方法: 一、使用document.querySelector() 通过使用document.querySelector()方法来查找元素,如果返回值不为null,那么表示找到了该元素,否则表示没有找到该元素。 var ele…

    JavaScript 2023年6月10日
    00
  • javascript 显示全局变量与隐式全局变量的区别

    展示全局变量和隐式全局变量是JavaScript中两种不同类型的变量声明方式。它们在作用域、可访问性以及代码安全性方面有所不同。 什么是全局变量? 全局变量是JavaScript中定义在顶层作用域中的变量。这意味着这些变量可以在代码中的任何位置被访问到,而非仅限于其定义位置所在的函数或代码块中。可以通过var,let,const等关键字来声明全局变量。 一个…

    JavaScript 2023年5月28日
    00
  • Javascript Global parseInt() 函数

    JavaScript Global对象中的parseInt()函数用于将一个字符串解析为整数。如果该字符串无法解析为整数,则返回NaN。以下是关于parseInt()函数的完整攻略,包括两个示例说明。 JavaScript Global对象中的parseInt()函数 JavaScript Global对象中的parseInt()函数用于将一个字符串解析为整…

    JavaScript 2023年5月11日
    00
  • 解析JavaScript中的不可见数据类型

    首先我们需要了解JavaScript中的不可见数据类型。 JavaScript中有七种数据类型:Undefined、Null、Boolean、Number、String、Object和Symbol(ES6新增)。其中Undefined和Null可以称为“空数据类型”,因为它们只有一个值:undefined和null。但是这两个值在JavaScript的底层实…

    JavaScript 2023年6月10日
    00
  • JavaScript箭头(arrow)函数详解

    JavaScript箭头(arrow)函数详解 箭头函数的概念 Arrow Function 是 ECMAScript 6 引入的新特性,通常又称为箭头函数。它是一种更简洁、更易读、更简单的函数定义方式。 箭头函数表达式语法形如: (param1, param2, …, paramN) => { statements } 箭头函数完整语法可以看做简化版…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部