1.关于setTimeout
作为参数传入setTimeout的函数将在指定时间执行,属于典型的异步函数
想想下面的代码将输出什么?
for(var i=0; i<5; i++){
setTimeout(function(){console.log(i)},0)
}
var start = new Date
while(new Date - start < 1000){
}
答案是停顿一秒后连续输出三个5
why?
- 为什么是5? 原因很简单用var命名的变量将作用于函数域,作用于整个for循环过程 ,很显然循环过后i=5;
- 为什么会停顿一秒?说明JavaScript事件处理器会在while循环结束后才执行定时器中的函数
2.关于onclick事件
通过 onclick 绑定的回调函数将在某个时刻用户点击后执行,也属于异步函数,它的执行需要等到代码执行完毕
//html
<button onclick="log()">点击</button>
//js
function log(){
console.log('click')
}
var start = new Date
while (new Date - start < 5000){
}
在while循环结束前按钮绑定的函数将无法执行