对应JavaScript的初学者来说,对于直接调用函数名还是调用函数字符串(加引号)比较难理解,之前在网上看到类似的问题,今天通过一个案例进行分享.
案例:
1. 确定事件 : onload
2. 文档加载完成,三秒之后弹出广告(先得找到要显示的广告元素)
3. 广告显示三秒钟
4. 隐藏广告
* */
$(function(){
function showAD(){
$("#ad").show();
setTimeout(hideAD,3000);
}
function hideAD(){
$("#ad").hide();
}
setTimeout(showAD,1000);
});
//showAD is not defined,报错
$(function(){
function showAD(){
$("#ad").show();
setTimeout("hideAD()",3000);
}
function hideAD(){
$("#ad").hide();
}
setTimeout("showAD()",1000);
});
//正确格式
$(function(){
setTimeout("showAD()",1000);
});
function showAD(){
$("#ad").show();
setTimeout("hideAD()",3000);
}
function hideAD(){
$("#ad").hide();
}
setTimeout(showAD,1000);//这个表示调用一个函数名为showtime的方法
setTimeout(“showAD()”,1000);//这个表示调用showAd()方法
setInterval、setTimeout第一个参数加与不加引号的区别:
总结:
1、字符串形式
也就是代码中用到的形式:setTimeout(“showAD()”,1000);setTimeout不再从局部变量中找这个参数,而是到全局环境中找,报错的原因是(作用域链规定了外部作用域是不能访问内部作用域中的相关函数和变量),使用字符串形式作为参数.
2、函数形式
setTimeout(showAD,1000);使用指针形式作为参数