iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0

閉包 (Closure ),每當函式被建立時,閉包就會產生,閉包是一個函式建立時的就有的自然特性,優先於範圍鏈,使一個函數記住所有存在的變數,該函數保留對其外部範圍的引用,即使外部範圍消失 ; 而為什麼可以做到閉包 (Closure ) ?

  1. JavaScript是一級函式(First-class Function),函式可視為變數,可以作為參數傳遞到另一個函式,可以被另一個函式作為回傳值且可以被當作值一樣指派到另一個變數。
  2. JavaScript是lexical scoped (詞彙範圍 ) ,變數作用域是在函數還沒執行前就決定好了。
    用例子示範 :
    https://ithelp.ithome.com.tw/upload/images/20240923/2016866137p1KsB1Hz.jpg
    我創了一個函式叫sayHello,而函式裡面還有一個函式b,裡面式打印hello,接著呼叫sayhello裡的b函式,所以用了兩個小括號,因為有return b函式的關係,除了b本身的程式碼外,也會捕抓到了環境的變數值,記住了執行當時的環境,就算之後再呼叫,也會記住hello變數,而打印的結果是hello!。
    https://ithelp.ithome.com.tw/upload/images/20240923/20168661KL5WAXBdXH.jpg

上一篇
第十三天 - - JavaScript this
下一篇
第十五天 - - JavaScript BOM & DOM(1)
系列文
跟著鱷魚妹妹一起坐牢之JavaScript 30天17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言