關於setInterval的func(),func,"func()"

2017-07-12 13:09:13php

遇到一個這樣的問題:當在jquery裏面用jquery

$(function(函數

//code ...code

setInterval(startTime,1000);ip

){})作用域

當傳入的形參爲func時正常,當func()時不可行,只運行了一次,當"func()「也不行,直接什麼都沒有了io

在網上找到了一篇貼子:http://www.softwhy.com/forum.php?mod=viewthread&tid=6940編譯

以及stackoverflow:https://stackoverflow.com/questions/457826/pass-parameters-in-setinterval-functionfunction

>>>在全局做用域下  setInterval("fun()",1000); 能夠正常執行,但放到window.onload函數中卻不能執行。爲何呢?thread

setInterval如今把以引號包括的可執行代碼進行處理。就像eval同樣給予執行,JavaScript有一個預編譯處理,首先對函數和變量進行預編譯。也就是說其函數和變量做用域是在其聲明的時候肯定的,而不是在執行的時候肯定。當setInterval把"fun()"執行環境換爲全局的後,對fun的調用是無效的。由於全局不能訪問局部的函數和變量。window.onload相對於window來講就是局部的。

相關文章
相關標籤/搜索