亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于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
提交
取消
信息滾動效果制作
  • 參與學習       47740    人
  • 解答問題       333    個

萌妹子帶您快速學習滾動效果,掌握無縫滾動和歇間性滾動的制作方法

進入課程

關于setInterval('scrollUp()',50);中為什么要加引號

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號