看板 Ajax 關於我們 聯絡資訊
大家好,小弟剛接觸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
ccvs: ipt-closures-efficiently/index.html 01/05 13:36
b85040312: 因為還用得到 所以不清除 01/09 15:47