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定时器的更多相关文章

  1. 关于setTimeout()你所不知道的地方,详解setTimeout()

    关于setTimeout()你所不知道的地方,详解setTimeout() 前言:看了这篇文章,1.注意setTimeout引用的是全部变量还是局部变量了,当直接调用外部函数方法时,实际上函数内部的变 ...

  2. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

  3. 【three.js详解之二】渲染器篇

    [three.js详解之二]渲染器篇   本篇文章将详细讲解three.js中渲染器(renderer)的设置方法. three.js文档中渲染器的分支如下: Renderers CanvasRend ...

  4. [js高手之路]深入浅出webpack系列2-配置文件webpack.config.js详解

    接着上文,重新在webpack文件夹下面新建一个项目文件夹demo2,然后用npm init --yes初始化项目的package.json配置文件,然后安装webpack( npm install ...

  5. [js高手之路]深入浅出webpack教程系列3-配置文件webpack.config.js详解(下)

    本文继续接着上文,继续写下webpack.config.js的其他配置用法. 一.把两个文件打包成一个,entry怎么配置? 在上文中的webpack.dev.config.js中,用数组配置entr ...

  6. [js高手之路]深入浅出webpack教程系列2-配置文件webpack.config.js详解(上)

    [js高手之路]深入浅出webpack教程系列索引目录: [js高手之路]深入浅出webpack教程系列1-安装与基本打包用法和命令参数 [js高手之路]深入浅出webpack教程系列2-配置文件we ...

  7. dev-server.js详解

    转载自:https://www.cnblogs.com/ye-hcj/p/7091706.html dev-server.js详解 require('./check-versions')() var ...

  8. webpack.dev.conf.js详解

    转载自:https://www.cnblogs.com/ye-hcj/p/7087205.html webpack.dev.conf.js详解 //引入当前目录下的utils.js文件模块var ut ...

  9. JS 详解 Cookie、 LocalStorage 与 SessionStorage-转载

    记录一下这些知识,有时候用到会忘记,对原文作者表达感谢. 附上原文链接:JS 详解 Cookie. LocalStorage 与 SessionStorage 基本概念 Cookie Cookie 是 ...

随机推荐

  1. Python自学--part2

    概要 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 一.列表.元祖操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 na ...

  2. 看了这么N多天DELPHI,突然我有个感觉

    感觉DELPHI很像Win32汇编   语法上不谈,就编写格式.形式上,很像 delphi的一个函数   procedure TForm1.btn1Click(Sender: TObject);beg ...

  3. 11-2-break

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. Luogu P3558 [POI2013]BAJ-Bytecomputer(线性dp)

    P3558 [POI2013]BAJ-Bytecomputer 题意 给一个只包含\(-1,0,1\)的数列,每次操作可以让a[i]+=a[i-1],求最少操作次数使得序列单调不降.若无解则输出BRA ...

  5. day48作业

    使用Bootstrap框架编写一个简单的web静态页面 效果图: <!DOCTYPE html> <html lang="en"> <head> ...

  6. vue.js_03_vue.js的样式和修饰符

    1.vue.js的样式 <body> <div id="app"> <h1 :style="styleObj1">这是一个h ...

  7. Yaf--个人封装yaf的框架+swoole+elasticsearch(Window+linux版)

    这是基于c写底层的yaf框架集成PDO+predis+读写分离+composer+全局异常处理+多模块开发+Log日志记录简单容易上手的框架 注意:window版没有swoole和Smarty主要用作 ...

  8. Oracele 11.2.0.3 的一个问题

    最近又在折腾Oracle.由于要用到Oracle spatial对Google投影的空间数据的操作,所以得安装11.2.0.3以上版本的Oracle.但是发现这样的一个问题,当我在64位系统的笔记本上 ...

  9. vue项目 环境搭建

    1.前端安装 安装项目:vue init webpack docvote 进入docvote里:cd docvote 安装脚手架:cnpm i 运行:npm run dev 2.异步加载 const ...

  10. 使用em为单位制作两列弹性布局

    一.DIV布局按照定位的方法分为:浮动方法(float),坐标定位方法(position),还有就是两者相结合的方法. 二.DIV布局按照定义单位的不同可分为:固定宽度布局.流体布局.弹性布局和混合布 ...