setTimeout的工作原理
来源:互联网 发布:网络棋牌作弊器下载 编辑:程序博客网 时间:2024/06/05 08:16
setTimeout(function(),ms)函数,Js文件中有这么一段代码:setTimeout( a() , 5000 );。
在执行流执行到setTimeout代码时,并不会原地踏步地等待执行完毕后再向下执行,而是会告诉浏览器,我这段代码要等待5秒之后再执行,然后立即向下执行接下来的代码。
经典阿里面试题
第一问:
var a = 6;
setTimeout(function () {
alert(a); //输出66
a = 666;},
1000);
a = 66;
首先定义了一个局部变量a,并且a=6 。然后执行流遇到了setTimeout(),告诉浏览器,我1秒之后再执行这段代码,此时a仍然为6。然后跳过setTimeout()中的代码继续向下执行,就碰到了a=66,将a赋值为66 。一秒过去了之后,浏览器开始调用setTimeout()函数中的匿名函数,遇到了alert(a),在此之前匿名函数中并没有创造局部变量a,所以随着作用域链由内向外搜寻有没有变量a。当搜寻到外部函数的作用域时,发现a已经被赋值成了66,则返回结果,最终弹出窗口显示66。
第二问:
var a = 6;
setTimeout(function () {
var a = 666;
alert(a); // 输出666,
}, 1000);
a = 66;
由于在setTimeout()的匿名函数中拥有了一个局部变量a,所以最后alert(a)输出的是666
第三问:
var a = 6;
setTimeout(function () {
alert(a); // 输出undefined,
var a=666;
}, 1000);
a = 66;
在进入setTimeout()函数之后,我们得先创建一个函数,然后才能执行它,在创建函数的时候,会搜寻函数内部是否有变量创建出来了。所以,当执行流遇到alert(a)的时候,开始搜寻当前环境下有没有a变量,最终发现了一个a变量,但是在未执行var a=666之前,a并没有被赋值,所以alert(a)的最终结果为undefined。
- setTimeout的工作原理
- setTimeout的工作原理
- setTimeout及Js的工作原理
- JavaScript的计时器的工作原理(setTimeout/setInterval)
- JavaScript setTimeout 的原理
- setTimeout原理
- setTimeout原理
- setTimeout原理
- 关于setTimeout和setInterval的实现原理
- setTimeout和setInterval原理
- setTimeout,异步,原理
- 防火墙的工作原理
- 网上邻居的工作原理
- 路由器的工作原理
- DHCP的工作原理
- JDBC的工作原理
- Internet的工作原理
- EJB的工作原理
- 第13周阅读程序(2)虚析构函数
- flood fill
- C#实验8(2)
- 找工作呀找工作
- Linux rm删除文件夹命令
- setTimeout的工作原理
- Nosql Mongodb 基本操作说明
- JavaScript学习--Item9 call(),apply(),bind()与回调
- 测试之始--你应该知道的知识
- 第十二周项目1.3—实现复数类中的运算符重载
- 慕课上学习的自定义进度条
- 区块链的共识问题
- Espresso学习笔记二:Espresso基础知识
- 【Leetcode】Search a 2D Matrix II