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

关于setInterval('scrollUp()',50);中为什么要加引号

老师setInterval('scrollUp()',50);中为什么要加引号,不加运行不出来,什么时候加什么时候不加,还有scrollUp()的括号什么时候加什么时候不加

正在回答

3 回答

这个确实有点迷惑,涉及到了js函数的作用域以及预编译的问题,setInterval 第一个参数 可以是函数名、匿名函数、函数的引用以及其他可执行代码,没有引号的时候,表示使用的是匿名函数或者函数的引用,有引号的时候,相当于告诉setInterval这个函数,我的引号内时一段可执行代码,然后这个原理,就跟eval函数的原理一样,即让浏览器去编译执行引号内的内容,楼主的代码中,'scrollUp()'就相当于把scrollUp的那段代码直接放在这里,然后去执行,不加引号的话,就是立即执行了,执行完一遍,资源释放,然后第二次执行的时候,就报错了

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

这样啊,可是老师讲的这种情况是字符串呀,感觉是个方法,为什么要用引号呢

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

因为setInterval的第一个参数,可以是一个方法的引用,也可以是一个字符串,可以是一个方法。如果是一个方法的引用就是  setInterval(scrollUp,50);  是没有引号,也没有括号的。如果是字符串就是 setInterval('scrollUp()',50); 如果上一个方法就是 setInterval(function(){scrollUp()},50);  这几种方式看个人需求使用。

1 回复 有任何疑惑可以回复我~
#1

张筱诺8983 提问者

这样啊,可是老师讲的这种情况是字符串呀,感觉是个方法,为什么要用引号呢
2015-12-13 回复 有任何疑惑可以回复我~
#2

李晓健 回复 张筱诺8983 提问者

因为如果你传入的是一个字符串 在setInterval 内部会去解析这个字符串,你传进去的时候是 ''scrollUp()'',会解析成 scrollUp() 就会执行这个方法,如果你传入的是scrollUp() ,这其实是对scrollUp这个方法的调用,当浏览器解析到这行代码时这个方法就会执行掉,然后该定时器执行时就成了 setInterval(undefined,50); 定时就无效了。
2015-12-13 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
信息滚动效果制作
  • 参与学习       47753    人
  • 解答问题       321    个

萌妹子带您快速学习滚动效果,掌握无缝滚动和歇间性滚动的制作方法

进入课程

关于setInterval('scrollUp()',50);中为什么要加引号

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