setTimeout()的参数问题
执行时间
setTimeout()方法接收两个参数,第一个参数可以是包含JavaScript代码的字符串,或者是一个函数。第二个参数表示等待多长时间的毫秒数将当前任务添加到队列中。
-
setTimeout(“go()”, 1000); //等待1000毫秒执行go函数
-
setTimeout(go, 1000); //等待1000毫秒执行go函数
-
setTimeout(go(), 1000); //立即执行go函数,这种情况会忽略后面的等待时间
带引号的话就是全局中寻找,不带引号在局部中寻找
(function () {
function fn() {
console.log(2);
}
setTimeout('fn()', 1000); // 全局变量 打印1
setTimeout(fn, 1000); // 局部变量 打印2
setTimeout(go(), 1000); //先找局部,局部找不到往原型链上找,立刻执行
})()
function fn(){
console.log(1);
}
function go(){
console.log("go");
}
输出 go 1 2
使用注意:
不建议使用字符串形式,传递字符串可能导致性能损失,因此建议使用函数形式。