課程
/前端開發
/JavaScript
/網頁廣告特效
setTimeout(adDown,1)執行函數的格式不是應該是setTimeout('adDown()',1),為什么代碼里面直接用函數名字就可以啦,初級菜鳥,望大神指教!
2017-03-29
源自:網頁廣告特效 2-3
正在回答
setTimeout雙引號中的作用域不捕捉局部變量,不用雙引號包著的是捕捉局部作用域的。例如
var a = function()??? {??????? alert(1111)??? }??? function abc()??? {??????? var a= function ()??????? {??????????? alert(2222)??????? }??????? setTimeout("a()",3000)//這個調用的全局函數a
??????? setTimeout(a,3000)//這個調用的局部函數a
這是我最近搜索的答案,感覺這個解釋更合理點。
我的理解是a_fun這只是函數名,a_fun()才是函數吧
因為setTimeout第一個參數是函數...比如setTimeout(a_fun,1000)這樣是可以的,a_fun是一個函數.但是setTimeout(a_fun(),1000);這樣就不行了.因為這里a_fun()其實是函數的返回值了,所以你要加上引號,
看一下w3c上的?http://www.w3school.com.cn/jsref/met_win_settimeout.asp
舉報
原來這么EASY,從淺到深,逐步優化代碼,讓你深入理解
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-03-31
setTimeout雙引號中的作用域不捕捉局部變量,不用雙引號包著的是捕捉局部作用域的。例如
var a = function()
??? {
??????? alert(1111)
??? }
??? function abc()
??? {
??????? var a= function ()
??????? {
??????????? alert(2222)
??????? }
??????? setTimeout("a()",3000)//這個調用的全局函數a
??????? setTimeout(a,3000)//這個調用的局部函數a
這是我最近搜索的答案,感覺這個解釋更合理點。
2017-03-31
我的理解是a_fun這只是函數名,a_fun()才是函數吧
2017-03-30
因為setTimeout第一個參數是函數...比如setTimeout(a_fun,1000)這樣是可以的,a_fun是一個函數.
但是setTimeout(a_fun(),1000);這樣就不行了.因為這里a_fun()其實是函數的返回值了,所以你要加上引號,
看一下w3c上的?http://www.w3school.com.cn/jsref/met_win_settimeout.asp