课程
/前端开发
/JavaScript
/网页广告特效
setTimeout(adDown,1)执行函数的格式不是应该是setTimeout('adDown()',1),为什么代码里面直接用函数名字就可以啦,初级菜鸟,望大神指教!
2017-03-29
源自:网页广告特效 2-3
正在回答
setTimeout双引号中的作用域不捕捉局部变量,不用双引号包着的是捕捉局部作用域的。例如
var a = function() { alert(1111) } function abc() { var a= function () { alert(2222) } setTimeout("a()",3000)//这个调用的全局函数a
setTimeout(a,3000)//这个调用的局部函数a
这是我最近搜索的答案,感觉这个解释更合理点。
我的理解是a_fun这只是函数名,a_fun()才是函数吧
因为setTimeout第一个参数是函数...比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数.但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_fun()其实是函数的返回值了,所以你要加上引号,
看一下w3c上的 http://www.w3school.com.cn/jsref/met_win_settimeout.asp
举报
原来这么EASY,从浅到深,逐步优化代码,让你深入理解