setTimeout()是window的方法,该方法用于在指定毫秒数后调用函数或者计算表达式。

我们一般常用的参数是两个,今天发现还有第三个参数
语法如下:

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

对于code这种方式,你可以使用字符串而不是安全function 的,在delay使用之后编译和执行字符串(使用该语法是不推荐的, 原因和 eval()一样,有风险)。

参数 描述
function 必需 参数可以是回调函数
delay 可选。执行这个function 需要等待的时间,以毫秒计。默认为 0。
arg 可选。 传给回调函数的参数(IE9 及其更早版本不支持该参数)。

下面是一道经典的面试题

for (var i = 1; i <= 5; i++) {setTimeout(function timer() {console.log(i)}, i * 1000)
}

执行代码,发现会每过一秒,会输出一个6,一共输出五次
那么怎么让他每隔1秒,依次输出12345呢,除了用let来定义i,还有一种方法就是利用setTimeout得 第三个参数,这个参数会被当成 timer 函数的参数传入。
代码如下:

for (var i = 1; i <= 5; i++) {setTimeout(function timer(j) {console.log(j)},i * 1000,i)
}

第三个参数以及之后的参数都可以作为回调函数的参数,举个最简单的例子
一个参数:

setTimeout((name) => {console.log('我是' +  name)
}, 1000, '小太阳')
// 1秒后输出我是小太阳

多个参数:

setTimeout((name, age) => {console.log('我是' + name + '永远' + age + '岁')
}, 1000, '小太阳', '18')
// 1秒后输出我是小太阳永远18岁

如果第三个参数是个函数,则会先执行这个函数

setTimeout(function(){console.log('回调函数')},1000,setTimeout(function(){console.log('先执行')}, 0)
)
// 立即输出先执行,1秒后输出回调函数

返回值 timeoutID
setTimeout的返回值timeoutID是一个正值,表示可以给予这个clearTimeout()最终结果。+

下面就说一下clearTimeout()

clearTimeout() 方法可取消由 setTimeout() 方法设置的定时操作。
clearTimeout() 方法的参数必须是由 setTimeout() 返回的 ID 值。

语法:

clearTimeout(timeoutID)
参数 描述
timeoutID 调用 setTimeout() 函数时所获得的返回值,使用该返回标识符作为参数,可以取消该 setTimeout() 所设定的定时执行操作。

setTimeout()和clearTimeout用法详解相关推荐

  1. ES6 — Promise基础用法详解(resolve、reject、then、catch,all,)

    ES6 - Promise基础用法详解 Promise 是一个构造函数,它自身拥有all.reject.resolve这几个眼熟的方法, 原型上有then.catch等同样熟悉的方法. 所以,在开始一 ...

  2. ajax then fail done,Jquery $when done then的用法详解

    对于$.ajax请求来说,如果层级比较多,程序看起来会比较乱,而为了解决这种问题,才有了$when...done...fail...then的封装,它将$.ajax这嵌套结构转成了顺序平行的结果,向下 ...

  3. linux 弹出窗口,实现弹出窗口的window.open用法详解(js代码)

    实现弹出窗口的window.open用法详解(js代码) [1.最基本的弹出窗口代码] 其实代码非常简单: 因为这是一段javascripts代码,所以它们应该放在 cript">标签 ...

  4. python argv 详解_Python3 sys.argv[ ]用法详解

    sys.argv[]说白了就是一个从程序外部获取参数的桥梁,这个"外部"很关键,因为我们从外部取得的参数可以是多个,所以获得的是一个列表(list),也就是说sys.argv其实可 ...

  5. oracle中的exists 和 not exists 用法详解

    from:http://blog.sina.com.cn/s/blog_601d1ce30100cyrb.html oracle中的exists 和 not exists 用法详解 (2009-05- ...

  6. ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多)

    ROW_NUMBER() OVER()函数用法详解 (分组排序 例子多) https://blog.csdn.net/qq_25221835/article/details/82762416 post ...

  7. python的继承用法_【后端开发】python中继承有什么用法?python继承的用法详解

    本篇文章给大家带来的内容是关于python中继承有什么用法?python继承的用法详解,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 面向对象三大特征 1.封装:根据职责将属性和方法 ...

  8. C++中substr()函数用法详解

    C++中substr()函数用法详解 原型: string substr (size_t pos = 0, size_t len = npos) const; 返回一个新构造的string对象,其值初 ...

  9. php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy

    Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...

最新文章

  1. Windows Small Business Server 2003 意外关闭 ; 1001, 1013 和 1014 事件记录
  2. React Native——react-navigation的使用
  3. 理解随机森林:基于Python的实现和解释
  4. boost::geometry模块多边形DP算法简化示例
  5. 阿里云mysql服务器太贵_阿里云数据库,跟自己在服务器安装的有什么区别?有人说安装很简单,那为什么要花钱买?...
  6. 可持久化线段树学习笔记
  7. android l 效果,[原]Android L中水波纹点击效果的实现
  8. python万年历源代码_python万年历实现代码 含运行结果
  9. 数据结构c语言版第二版第三章课后答案,数据结构(C语言版)习题集答案第三章.doc...
  10. SQL Server商业智能功能– SQL Server数据工具–商业智能
  11. 基于matlab的FFT滤波,可以实现对simulink模型中示波器的波形数据或者外部mat数据、csv数据进行谐波分析(FFT)和自定义频段清除
  12. PCA(主成分分析法)使用情景及排序企业综合实力示例
  13. 最全最好的Tracker地址目录
  14. 五年之内,博士学历是否也会开始内卷?
  15. wordpress调用the_excerpt()不带p标签
  16. Python GUI 设计(一)———Tkinter窗口创建、组件布局
  17. 云服务器搭建青龙面板每日自动拿京豆
  18. CF1153D Serval and Rooted Tree
  19. 【C++】Loki库使用
  20. 原创 使用docker 安装CVAT并使用

热门文章

  1. maven聚合项目项目间依赖时,出现错误的解决办法
  2. Pads solder mask层和paste mask的区别理解
  3. Solder Mask与Paste Mask
  4. 为什么我们要学普通话?方言衰落的原因是什么?
  5. #新零售报告#社区团购、社区经济报告全集
  6. uni-app(uniCloud)云开发地毯式介绍
  7. HFOIer4.22题解
  8. Python-123 试题 天龙八部
  9. 【SpringBoot】65、SpringBoot整合Canal+RabbitMQ监听MySQL实现数据同步更新Redis缓存
  10. 举个栗子~Tableau 技巧(234):实现山峰柱形图