[問題] js閉包的基礎觀念疑問

作者: paul09253336 (paulma)   2020-01-05 10:55:19
大家好,小弟剛接觸js不久,目前正在利用網路平台學習,課程正好教到閉包並解釋了基
本原理,講師舉了一個function例子,如下
function greet(word)
{
return function(name){
console.log(word+ ' '+name);
}
}
var sayhi=greet('hi');
sayhi('paul');
在講師的講解中說當程式執行到
var sayhi=greet('hi'); 時
此時js會建立一個execution context,
而word這個變數則會儲存在
function greet的execution context中
當function greet執行完畢,便會離開execution stack
而在一般狀況js會透過garbage collection清除變數內容,但在抽離當下變數還是儲存在
記憶體中,所以之後才能繼續使用到這個變數
但我聽完後有點疑問,目前我的理解是在function執行完畢當下,garbage collection會
執行清除變數內容,所以在function greet執行完,word的這個變數應該就跟著清除了,
但現在看起來並不是這麼一回事,所以想請問js的garbage collection是在什麼時候會執
行?還是是js在遇到閉包時會自動不執行garbage collection?
希望各位高手能夠解答小弟的疑惑
作者: ccvs (kisS x Sis)   2020-01-05 13:36:00
作者: b85040312 (萬年newman)   2020-01-09 15:47:00
因為還用得到 所以不清除

Links booklink

Contact Us: admin [ a t ] ucptt.com