千家信息网

setTimeout的第三个参数是什么及怎么用

发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,今天小编给大家分享一下setTimeout的第三个参数是什么及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收
千家信息网最后更新 2025年01月21日setTimeout的第三个参数是什么及怎么用

今天小编给大家分享一下setTimeout的第三个参数是什么及怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

我们先来看一段简单的代码:

setTimeout(function(x) {    console.log(x);}, 1000, 1);

控制台输出1,那么能不能继续加参数呢?我们继续来看下面这段代码:

setTimeout(function(x,y) {    console.log(x+y);}, 1000, 1, 2);

控制台输出的是3,很显然是第三和第四个参数的和。

看到这里很多小伙伴应该意识到了,是的,setTimeout的第三个参数作用就是给setTimeout第一个函数的参数。

通过查询MDN 我们能看到关于第三个参数的描述:

var timeoutID = scope.setTimeout(function[, delay, arg1, arg2, ...]);var timeoutID = scope.setTimeout(function[, delay]);var timeoutID = scope.setTimeout(code[, delay]);

所以,其实准确来讲,setTimeout可以有无数个参数,只是从第三个参数起,就是可选参数了。

好了,知道这个特性后我们可以解决什么问题呢?最经典的一个就是for循环内使用setTimeout了。

for(var i = 0; i<6; i++) {    setTimeout(function() {        console.log(i);    }, 1000);}

上面的这个例子是一个经典的面试题,它会连续输出6次6,因为setTimeout是一个异步操作,而等到执行setTimeout时,for循环已经执行完毕,这时的i已经等于6,所以输出6次的6。关于解决方法我总结了好几种,感兴趣的小伙伴可以看我的上一篇博客《关于for循环中使用setTimeout》,在这篇博客结尾我提到了使用setTimeout第三个参数,那我们再来看看这种方法。

for(var i=0;i<6;i++) {    setTimeout(function(j) {        console.log(j);    }, 1000, i);}

由于每次传入的参数是从for循环里面取到的值,所以会依次输出0~5。这当然还是作用域的问题,但是在这里setTimeout第三个参数却把i的值给保存了下来。这种解决方法比使用闭包轻快的多。

另外,第三个参数也可以作为函数来使用。

for(var i=0;i<6;i++) {    setTimeout(function(j) {        console.log(j);    }, 1000, i);}

最后依次输出为,第一次0、第二次1。

可以看到第三个参数还可以是先执行,然后再执行函数。


下面是MDN上关于兼容性的描述:

Note: Passing additional arguments to the function in the first syntax does not work in Internet Explorer 9 and below. If you want to enable this functionality on that browser, you must use a polyfill (see the Polyfill section).

以上就是"setTimeout的第三个参数是什么及怎么用"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

参数 三个 输出 就是 知识 篇文章 循环 函数 方法 代码 作用 内容 博客 小伙 小伙伴 控制台 经典 问题 面的 控制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 计算机等级考网络技术知识 数据库技术实践论文 一个常见的网络安全模型 安卓studio数据库异常 网络安全服务创业 哪个网站可以估价软件开发 善义善美网络技术有限公司 河南数据网络技术标准 icao中国网络技术研讨会 青岛app软件开发 实验室大型服务器价格 网吧主机怎么打开服务器 ps5暴雪服务器连接不上 手机无法联系服务器请检查网络 网络安全自查查什么 计算机通信与网络技术中的名词 北京冬奥会网络安全工作总结 服务器正在维修是怎么回事 怎么改变数据库类型 绍兴易新网络技术招聘微信小程序 广讯通兼容检测无法连接到服务器 接收发送邮件服务器 云服务器游戏登录不上怎么办 答辩问题简述数据库设计流程 数据库系统比数据库大么 投资服务器骗局 大性感 上海正泰网络技术有限公司 搭建服务器后期如何增加容量 大学生网络安全知识调查报告 dwcc面板数据库界面插件
0