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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript問題, 定義一個函數 function func(){ 函數體?

JavaScript問題, 定義一個函數 function func(){ 函數體?

Git
智慧大石 2019-01-27 09:05:34
JavaScript問題, 定義一個函數 function func(){ 函數體
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

不會溢出。

原因,這不是一個“死循環”。

12345//這才是死循環,函數的調用堆棧會不斷變大。直到溢出。function func(){    //函數體    func();}
12345678//但是,加上setTimeout之后,就不是死循環//因為1秒之后,setTimeout會開啟一個新的函數調用堆棧。跟上一次的不是同一個。因此不會產生調用堆棧不斷變大直到溢出的情況。function func(){    //函數體    setTimeout(function(){        func();    },1000);}

 

流程是這樣的。


步驟1:創建一個調用堆棧,執行func函數,func函數中注冊了一個定時器。func執行上下文銷毀。


步驟2:1秒鐘之后(不能保證一定是1秒鐘,理想情況下是1秒鐘),定時器觸發


步驟3:創建一個新的調用堆棧,執行定時器中注冊的回調函數-- func。重復步驟1.


查看完整回答
反對 回復 2019-03-14
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

你這樣寫就是個遞歸,你不會在里面給個判斷啊,滿足就不進行
setTimeout函數不是每t時間執行一次,而是t時間后執行一次,僅一次而已
所以你可以這樣
if(true) setTimeot(XXX);
else alert('');

查看完整回答
反對 回復 2019-03-14
  • 2 回答
  • 0 關注
  • 955 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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