js 详解setTimeout定时器
setTimeout: 定时器函数
第一个参数是匿名函数,第二个参数是延迟执行时间
setTimeout(function(){},time)
注意:
1.setTimeout函数是Window对象提供的方法,因此this默认指向window,可以通过bind/call/apply改变this指向
2.setTimeout函数的真正执行时间是在所有可执行的代码执行完毕后才会执行(函数调用栈清空后)
3.多个setTimeout函数存在的情况下,会按照延迟执行时间的先后执行
setTimeout(function(){console.log('a:'+a)},10); //
var a=10;
console.log('b:'+b); //
console.log('fn:'+fn); //
var b=20;
function fn(){
setTimeout(function(){console.log('setTimeout 0s')},0)
}
fn.toString=function(){return 30}
console.log('fn2:'+fn) //
fn(); //
结合上面注意的点,可知道执行顺序为以上标识,具体解释如下:
1:执行打印b,因为变量的声明会提前,同时赋默认值为undefined,但执行的时候b还没有赋值
所以b是undefined
2: 执行打印fn,因为fn的声明也会提前,因为函数声明会同时把函数体也带着(函数表达式就不一定了)
所以fn是setTimeout(function(){console.log('setTimeout 0s')},0)
3: 执行再次打印fn,因为这个时候fn加了一个tostring方法,因此会默认走toString方法
所以此时fn是
4: 执行fn(),因为延迟时间小于第一个setTimeout
所以此时fn的值为setTimeout 0s
5: 执行打印a,打印为
js 详解setTimeout定时器的更多相关文章
- 关于setTimeout()你所不知道的地方,详解setTimeout()
关于setTimeout()你所不知道的地方,详解setTimeout() 前言:看了这篇文章,1.注意setTimeout引用的是全部变量还是局部变量了,当直接调用外部函数方法时,实际上函数内部的变 ...
- 【three.js详解之一】入门篇
[three.js详解之一]入门篇 开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...
- 【three.js详解之二】渲染器篇
[three.js详解之二]渲染器篇 本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...
- [js高手之路]深入浅出webpack系列2-配置文件webpack.config.js详解
接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install ...
- [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)
本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...
- [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)
[js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...
- dev-server.js详解
转载自:https://www.cnblogs.com/ye-hcj/p/7091706.html dev-server.js详解 require('./check-versions')() var ...
- webpack.dev.conf.js详解
转载自:https://www.cnblogs.com/ye-hcj/p/7087205.html webpack.dev.conf.js详解 //引入当前目录下的utils.js文件模块var ut ...
- JS 详解 Cookie、 LocalStorage 与 SessionStorage-转载
记录一下这些知识,有时候用到会忘记,对原文作者表达感谢. 附上原文链接:JS 详解 Cookie. LocalStorage 与 SessionStorage 基本概念 Cookie Cookie 是 ...
随机推荐
- 进程外Session---数据库Session的配置
怎么将Session记录到数据库中呢? 其实微软已经为我们设置好了.只要我们简单的配置一下就行了. 当然也要在 “我的电脑” 鼠标右键--->管理--->服务和应用程序----> 服 ...
- 记一次log4j日志文件小事故
最近散仙在做公司的一个跟搜索有关的数据分析项目,主要就是统计搜索的转化率,目的主要有以下几个: (1)通过数据分析挖掘,找出搜索业务在整个平台系统里的GMV里所占份额 (2)给公司的搜索算法调优,提供 ...
- CAS(客户端)程序获取安全证书
以下是获取安全证书的一种方法,通过以下程序获取安全证书: import java.io.BufferedReader; import java.io.File; import java.io.File ...
- qq音乐网站页面切换歌手分类时不刷新
1.提交表单时会自动刷新页面(提交表单一般使用post方式提交) 2.动态加载数据时页面不会刷新,只是把页面中某个位置的内容替换掉想要的内容 3.一般在切换到不同的html页面时才会强制让你把页面刷新 ...
- 在三维场景中加载shp(skyline)
在场景中添加shp图层有两个方法: (1)直接调用Command命令,SGWorld.Command.Execute(1013,5);这样的话,和在场景中的工程树中右键添加特征图层的过程是一样的.有个 ...
- mysql 安装失败 start service执行不下去
简单说一下自己安装mysql的经历坑点,新手应该都会遇到.新买了一个电脑,第一次安装的情况:在网上下载好几个不同的mysql,安装都在最后一步执行的时候,执行不下去,最后打开客户端,就是闪一下就消失了 ...
- Coreutils - GNU core utilities
coreutils 是GNU下的一个软件包,包含linux下的 ls等常用命令.这些命令的实现要依赖于shell程序.一般在系统中都默认安装,也可自己安装或更新.例如,安装coreutils-6.7. ...
- org.apache.ant实现压缩和解压
<dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactI ...
- 查看cpu性能和磁盘空间
df -h查看当前磁盘空间 du -sh查看当前目录占用的磁盘空间 du -sh * 查看当前所有目录占用的磁盘空间 lscpu查看cpu信息 free查看空间总量
- Laravel Carbon获取 某个时间后N个月的时间
$time = "2020-11-20 00:00:00"; $res = (new Carbon)->setTimeFromTimeString($time)->ad ...