[問題] js閉包的基礎觀念疑問
大家好,小弟剛接觸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?
希望各位高手能夠解答小弟的疑惑
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 39.10.203.44 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Ajax/M.1578192921.A.49E.html
推
01/05 13:36,
4年前
, 1F
01/05 13:36, 1F
→
01/05 13:36,
4年前
, 2F
01/05 13:36, 2F
推
01/09 15:47,
4年前
, 3F
01/09 15:47, 3F
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
2
3
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章