js内容整理
定时器
JavaScript 提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()
和setInterval()
这两个函数来完成。
setTimeout()
setTimeout
函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。
var timerId = setTimeout(func|code, delay);
上面代码中,setTimeout
函数接受两个参数,第一个参数func|code
是将要推迟执行的函数名或者一段代码,第二个参数delay
是推迟执行的毫秒数。
console.log(1);
setTimeout('console.log(2)',1000);
console.log(3);
延迟1000ms打印 2
还可以用用函数调用
function f() {
console.log(2);
}
console.log(1);
setTimeout(f, 1000);
console.log(3);
setTimeout
还允许更多的参数。回调函数
var x = 1;
var obj = {
x: 2,
y: function () {
console.log(this.x);
}
};
setTimeout(obj.y, 1000)
上面代码输出的是1,而不是2。因为当obj.y
在1000毫秒后运行时,this
所指向的已经不是obj
了,而是全局环境。
var x = 1;
var obj = {
x: 2,
y: function () {
console.log(this.x);
}
};
setTimeout(function () {
obj.y();
}, 1000);
上面代码中,obj.y
放在一个function函数之中,这使得obj.y
在obj
的作用域执行,而不是在全局作用域内执行,所以能够显示 2
也可以用bind绑定的方法
var x = 1;
var obj = {
x: 2,
y: function () {
console.log(this.x);
}
};
setTimeout(obj.y.bind(obj), 1000)
`闭包函数的作用`:
1.内部函数
2. 自由变量
3. 闭包可以记住自由变量的状态
setInterval
的一个常见用途是实现轮询。
var hash = window.location.hash;
var hashWatcher = setInterval(() => {
if (window.location.hash != hash) {
console.log();
}
}, 1000);