什么是闭包? 有什么作用?
一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。闭包的特点:
- 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。
- 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
作用:可以通过闭包,让外部访问函数体内变量。
setTimeout 0 有什么作用
![](https://img.haomeiwen.com/i3264781/13480440e06887df.png)
作用:改变执行顺序
下面的代码输出多少?修改代码让fnArr[i]()
输出 i。使用两种以上的方法
![](https://img.haomeiwen.com/i3264781/28714b889afef823.png)
代码输出10
第一种:
![](https://img.haomeiwen.com/i3264781/a1ddda065a995a3c.png)
第二种:
![](https://img.haomeiwen.com/i3264781/f4d82549d5c176b9.png)
使用闭包封装一个汽车对象,可以通过如下方式获取汽车状态
![](https://img.haomeiwen.com/i3264781/71552d99295c82bf.png)
![](https://img.haomeiwen.com/i3264781/b6b6447384a5e719.png)
写一个函数使用setTimeout模拟setInterval的功能
![](https://img.haomeiwen.com/i3264781/822b20368c4f880a.png)
写一个函数,计算setTimeout平均[备注:新加]最小时间粒度
![](https://img.haomeiwen.com/i3264781/5bd7bb2acda9364f.png)
下面这段代码输出结果是? 为什么?
![](https://img.haomeiwen.com/i3264781/8afc2bb2fe23e12e.png)
![](https://img.haomeiwen.com/i3264781/64163ec9e017951e.png)
下面这段代码输出结果是? 为什么?
![](https://img.haomeiwen.com/i3264781/58b43942cb3db781.png)
会停留在
while(flag){}
,一直循环。因为setTimeout(0)语句放在最后执行,而flag初始值为true,while循环一直执行。
下面这段代码输出?如何输出delayer: 0, delayer:1...(使用闭包来实现)
![](https://img.haomeiwen.com/i3264781/ef47d8b1b9bb4542.png)
输出:
![](https://img.haomeiwen.com/i3264781/d0822d9bc7e312ef.png)
因为setTimeout(0)语句最后执行,所以先执行循环打印,而i在setTimeout中未定义,所以获取for循环执行完后的i,此时i=5;循环了5次,所以打印5次。
修改:
![](https://img.haomeiwen.com/i3264781/e9a25a5b068c16a7.png)
网友评论