为了账号安全,请及时绑定邮箱和手机立即绑定

setTimeout(adDown,1)执行函数的格式不是应该是setTimeout('adDown()',1)

setTimeout(adDown,1)执行函数的格式不是应该是setTimeout('adDown()',1),为什么代码里面直接用函数名字就可以啦,初级菜鸟,望大神指教!



正在回答

3 回答

setTimeout双引号中的作用域不捕捉局部变量,不用双引号包着的是捕捉局部作用域的。例如

var a = function()
    {
        alert(1111)
    }
    function abc()
    {
        var a= function ()
        {
            alert(2222)
        }
        setTimeout("a()",3000)//这个调用的全局函数a

        setTimeout(a,3000)//这个调用的局部函数a

这是我最近搜索的答案,感觉这个解释更合理点。

0 回复 有任何疑惑可以回复我~

我的理解是a_fun这只是函数名,a_fun()才是函数吧

0 回复 有任何疑惑可以回复我~

因为setTimeout第一个参数是函数...比如setTimeout(a_fun,1000)这样是可以的,a_fun是一个函数.
但是setTimeout(a_fun(),1000);这样就不行了.因为这里a_fun()其实是函数的返回值了,所以你要加上引号,

看一下w3c上的 http://www.w3school.com.cn/jsref/met_win_settimeout.asp

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
网页广告特效
  • 参与学习       40178    人
  • 解答问题       130    个

原来这么EASY,从浅到深,逐步优化代码,让你深入理解

进入课程

setTimeout(adDown,1)执行函数的格式不是应该是setTimeout('adDown()',1)

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信