課程
/前端開發
/JavaScript
/JavaScript進階篇
JavaScript中函數的生存周期是不是跟C語言里面一樣,在函數結束之后就返還給內存了?就是在函數之外就不能再引用和寫入函數里面的變量了?請舉例說明。
2015-12-21
源自:JavaScript進階篇 5-5
正在回答
Javascript和C語言一樣也采用詞法作用域(lexical scoping),就像你說的一樣,這種特性叫“閉包”,每次調用函數都會創建新的對象來保存局部變量,并把這個對象添加到作用域鏈中,當函數返回的時候就從作用域鏈中把這個對象銷毀,只有不存在嵌套函數或者其它指向這個函數的引用,它才會被當成垃圾回收,這一點和你的認識有點偏差。
function?counter(){ ????var?n?=?0; ????return?{ ????????count?:?function(){?return?n++;?}, ????????reset?:?function(){?n?=?0;?} ????}; } var?c?=?counter(),d?=?counter(); c.count(); d.count(); c.reset(); c.count(); d.count();
舉報
本課程從如何插入JS代碼開始,帶您進入網頁動態交互世界
5 回答函數中的變量不用聲明?
3 回答數組中的變量
2 回答函數傳參變量的聲明
1 回答函數的參數可以使變量名嗎?
6 回答函數有全局變量和局部變量之分嗎?
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-12-21
Javascript和C語言一樣也采用詞法作用域(lexical scoping),就像你說的一樣,這種特性叫“閉包”,每次調用函數都會創建新的對象來保存局部變量,并把這個對象添加到作用域鏈中,當函數返回的時候就從作用域鏈中把這個對象銷毀,只有不存在嵌套函數或者其它指向這個函數的引用,它才會被當成垃圾回收,這一點和你的認識有點偏差。