1. setInterval()
计时器,每隔一个指定时间段,重复执行的代码块或方法,以毫秒为单位,最小为10-15ms
有返回值,是页面中第几个计时器返回值就是几
在火狐中,返回值从2开始
在其他浏览器,返回值从1开始
计时器中可嵌套计时器,但是不允许嵌套!!!
var set1 = setInterval(function () {
box1.style.backgroundColor = `rgb(${rand(0, 255)},${rand(0, 255)},${rand(0, 255)})`;
}, 500);
清除计时器
clearInterval()可取消由setInterval()设置的timeout,可以直接运行,但是一般有触发条件
clearInterval(set1); 可写计时器名或计时器ID
清除页面全部计时器
必须写在页面底部
function clearIntervalAll(){
// res可以得到页面所有定时器
// 根据clearInterval可以使用id清除计数器的原理
// 借助 for 循环 将 id 写到 每一个 clearInterval 里面
// 这样就可以清除页面全部定时器
var res=setInterval(function(){})
for(var i=0;i<res;i++){
clearInterval(i);
}
}
2. setTimeout()
定时器,规定指定时间ms后,执行一次
var i = 10;
setInterval(function(){
console.log(i--);
},1000)
3. 闭包
定义:
在函数内部嵌套定义一个函数,在内部函数中,操作外部函数的变量,并在函数外调用内部的操作函数,才会形成闭包
特点:
可以使外部函数的局部变量暂存,不会销毁
用途:
避免全局变量污染,变量长期驻扎在内存中
总结:
函数内声明一个函数,并对外层函数内的变量进行操作,而且在函数体外部触发内部函数,这其中所形成的的闭合回路叫闭包