關(guān)于setInterval('scrollUp()',50);中為什么要加引號(hào)
老師setInterval('scrollUp()',50);中為什么要加引號(hào),不加運(yùn)行不出來,什么時(shí)候加什么時(shí)候不加,還有scrollUp()的括號(hào)什么時(shí)候加什么時(shí)候不加
老師setInterval('scrollUp()',50);中為什么要加引號(hào),不加運(yùn)行不出來,什么時(shí)候加什么時(shí)候不加,還有scrollUp()的括號(hào)什么時(shí)候加什么時(shí)候不加
2015-12-13
舉報(bào)
2015-12-13
這個(gè)確實(shí)有點(diǎn)迷惑,涉及到了js函數(shù)的作用域以及預(yù)編譯的問題,setInterval 第一個(gè)參數(shù) 可以是函數(shù)名、匿名函數(shù)、函數(shù)的引用以及其他可執(zhí)行代碼,沒有引號(hào)的時(shí)候,表示使用的是匿名函數(shù)或者函數(shù)的引用,有引號(hào)的時(shí)候,相當(dāng)于告訴setInterval這個(gè)函數(shù),我的引號(hào)內(nèi)時(shí)一段可執(zhí)行代碼,然后這個(gè)原理,就跟eval函數(shù)的原理一樣,即讓瀏覽器去編譯執(zhí)行引號(hào)內(nèi)的內(nèi)容,樓主的代碼中,'scrollUp()'就相當(dāng)于把scrollUp的那段代碼直接放在這里,然后去執(zhí)行,不加引號(hào)的話,就是立即執(zhí)行了,執(zhí)行完一遍,資源釋放,然后第二次執(zhí)行的時(shí)候,就報(bào)錯(cuò)了
2015-12-13
這樣啊,可是老師講的這種情況是字符串呀,感覺是個(gè)方法,為什么要用引號(hào)呢
2015-12-13
因?yàn)閟etInterval的第一個(gè)參數(shù),可以是一個(gè)方法的引用,也可以是一個(gè)字符串,可以是一個(gè)方法。如果是一個(gè)方法的引用就是 ?setInterval(scrollUp,50); ?是沒有引號(hào),也沒有括號(hào)的。如果是字符串就是?setInterval('scrollUp()',50); 如果上一個(gè)方法就是?setInterval(function(){scrollUp()},50); ?這幾種方式看個(gè)人需求使用。