課程
/前端開發
/JavaScript
/信息滾動效果制作
老師setInterval('scrollUp()',50);中為什么要加引號,不加運行不出來,什么時候加什么時候不加,還有scrollUp()的括號什么時候加什么時候不加
2015-12-13
源自:信息滾動效果制作 2-2
正在回答
這個確實有點迷惑,涉及到了js函數的作用域以及預編譯的問題,setInterval 第一個參數 可以是函數名、匿名函數、函數的引用以及其他可執行代碼,沒有引號的時候,表示使用的是匿名函數或者函數的引用,有引號的時候,相當于告訴setInterval這個函數,我的引號內時一段可執行代碼,然后這個原理,就跟eval函數的原理一樣,即讓瀏覽器去編譯執行引號內的內容,樓主的代碼中,'scrollUp()'就相當于把scrollUp的那段代碼直接放在這里,然后去執行,不加引號的話,就是立即執行了,執行完一遍,資源釋放,然后第二次執行的時候,就報錯了
這樣啊,可是老師講的這種情況是字符串呀,感覺是個方法,為什么要用引號呢
因為setInterval的第一個參數,可以是一個方法的引用,也可以是一個字符串,可以是一個方法。如果是一個方法的引用就是 ?setInterval(scrollUp,50); ?是沒有引號,也沒有括號的。如果是字符串就是?setInterval('scrollUp()',50); 如果上一個方法就是?setInterval(function(){scrollUp()},50); ?這幾種方式看個人需求使用。
張筱諾8983 提問者
李曉健 回復 張筱諾8983 提問者
舉報
萌妹子帶您快速學習滾動效果,掌握無縫滾動和歇間性滾動的制作方法
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-13
這個確實有點迷惑,涉及到了js函數的作用域以及預編譯的問題,setInterval 第一個參數 可以是函數名、匿名函數、函數的引用以及其他可執行代碼,沒有引號的時候,表示使用的是匿名函數或者函數的引用,有引號的時候,相當于告訴setInterval這個函數,我的引號內時一段可執行代碼,然后這個原理,就跟eval函數的原理一樣,即讓瀏覽器去編譯執行引號內的內容,樓主的代碼中,'scrollUp()'就相當于把scrollUp的那段代碼直接放在這里,然后去執行,不加引號的話,就是立即執行了,執行完一遍,資源釋放,然后第二次執行的時候,就報錯了
2015-12-13
這樣啊,可是老師講的這種情況是字符串呀,感覺是個方法,為什么要用引號呢
2015-12-13
因為setInterval的第一個參數,可以是一個方法的引用,也可以是一個字符串,可以是一個方法。如果是一個方法的引用就是 ?setInterval(scrollUp,50); ?是沒有引號,也沒有括號的。如果是字符串就是?setInterval('scrollUp()',50); 如果上一個方法就是?setInterval(function(){scrollUp()},50); ?這幾種方式看個人需求使用。