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