http://blog.csdn.net/qq_23980427/article/details/54578216
关于settimeout要说的事情比较多
https://www.cnblogs.com/giggle/p/5346531.html
http://blog.csdn.net/cxl444905143/article/details/40180491
https://www.cnblogs.com/mercy/articles/2424882.html
除了参数问题,setTimeout还有一个需要注意的地方:被setTimeout推迟执行的回调函数是在全局环境执行,这有可能不同于函数定义时的上下文环境
再看一个不容易发现错误的例子。
function User(login) {
this.login = login;
this.sayHi = function() {
console.log(this.login);
}
}
var user = new User('John');
setTimeout(user.sayHi, 1000);
上面代码只会显示undefined,因为等到user.sayHi执行时,它是在全局对象中执行,所以this.login取不到值。
为了防止出现这个问题,一种解决方法是将user.sayHi放在函数中执行。
setTimeout(function() {
user.sayHi();
}, 1000);
上面代码中,user.sayHi是在函数作用域内执行,而不是在全局作用域内执行,所以能够显示正确的值。
http://blog.csdn.net/cxl444905143/article/details/40180491
讲到了用setTimeout实现 setIntervel,以及他们的具体应用场景----防抖动!!!!注意防抖动最常见的事件scroll,keydown这种频繁触发的事件
http://blog.csdn.net/cxl444905143/article/details/40180491
settimeout(f,0)讲解的非常好,尤其是他的应用场景
http://blog.csdn.net/baidu_24024601/article/details/51862488
这个讲了setintervel的缺点以及用settimeout实现intervel感觉有点绕
http://blog.csdn.net/kingboy2008/article/details/51689079
这篇文章讲的性能问题非常典型,涉及到浏览器线程运行机制
使用定时器分解任务 这个概念要好好理解下
合理使用定时器无疑能够增加页面的整体性能,在处理不需要同步,不需要顺序执行的任务时,可以考虑使用setTimeout代替for循环 异步处理任务。
-- 这句话比较难理解
使用settimeout(f,0)能实现动画的原理是,不断地改变样式,比如宽高不断增大,这样就变成了动画,
还可用于控制事件冒泡中的执行顺序
settimeout运行函数中this指向的是window,如果想让他指向当前对象呢
https://www.cnblogs.com/giggle/p/5346531.html
1 先保存this到that中,用that
2 用 bind