一.setTimeout
1.setTimeout的第三个及更多的参数
//定时器启动时候,第三个以后的参数是作为第一个func()的参数传进去。
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms, "我是setTimeout的第三个参数,将作为setTimeout的第一个参数的参数传递进去")
})
}
timeout(3000).then((value) => {
console.log(value)//"我是setTimeout的第三个参数,将作为setTimeout的第一个参数的参数传递进去"
})
function sum(x, y) {
console.log(x+y) //4
}
setTimeout(sum, 1000, 1, 3);
2.setTimeout(function, 0) 发生了什么
解释setTimeout(function, 0) 这个常用的“奇技淫巧”很简单,就是为了将function里的任务异步执行,0不代表立即执行,而是将任务推到消息队列的最后,再由主线程的事件循环去调用它执行。HTML5 中规定setTimeout 的最小时间不是0ms,而是4ms
。事实上,setTimeout有一个最小执行时间,当指定的时间小于该时间时,浏览器会用最小允许的时间作为setTimeout的时间间隔,也就是说即使我们把setTimeout的毫秒数设置为0,被调用的程序也没有马上启动。这个最小的时间间隔是多少呢?这和浏览器及操作系统有关。
1.HTML5标准规定
setTimeout的最短时间间隔是4毫秒;
setInterval的最短间隔时间是10毫秒,也就是说,小于10毫秒的时间间隔会被调整到10毫秒
书和MDC2.在John Resig的新书《Javascript忍者的秘密》一书中提到
Browsers all have a 10ms minimum delay on OSX and a(approximately)
15ms delay on Windows. 在苹果机上的最小时间间隔是10毫秒,
在Windows系统上的最小时间间隔大约是15毫秒。
MDC中关于setTimeout的介绍中也提到,Firefox中定义的最小时间间隔(DOM_MIN_TIMEOUT_VALUE)是10毫秒,HTML5定义的最小时间间隔是4毫秒。3.大多数电脑显示器的刷新频率是60HZ,大概相当于每秒钟重绘60次。因此,最平滑的动画效的最佳循环间隔是1000ms/60,约等于16.6ms。
为了节电,对于那些不处于当前窗口的页面,浏览器会将时间间隔扩大到1000毫秒。
另外,如果笔记本电脑处于电池供电状态,Chrome和IE9以上的版本,会将时间间隔切换到系统定时器,大约是16.6毫秒。
目前,经在firefox和chrome里的测试,发现firefox识别的最小时间间隔是0,chrome识别的最小时间间隔是1,看一下demo:
setTimeout(function() {
console.log(2)
}, 2)
setTimeout(function() {
console.log(1)
}, 1)
setTimeout(function() {
console.log(0)
}, 0)
chrome:
firefox:
看下面的事例。
二.script脚本引用
1.<script>引用外部js文件时,必须是<script ...></script>标记格式,不要采取省略形式。
2.在引用多个外部js文件时,省略了</script>将影响到该行下一行的脚本文件,即下一行脚本代码不能被引用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。