iT邦幫忙

2022 iThome 鐵人賽

DAY 21
0
自我挑戰組

I don't know JS yet系列 第 21

[ Day 21 ] I don't know JS yet

  • 分享至 

  • xImage
  •  

今天的文章內容,是 YDKJS - Scope & Closure ch2.md 讀後心得。

https://ithelp.ithome.com.tw/upload/images/20221026/20151632D5jNKAkT9y.jpg
如果把 variables 譬喻成花朵,那麼 scope 就是裝著花朵的桶子了。
同個顏色的花朵會被分做同一堆,當 JS engine 在 compiling 時,就可以利用這個機制,來分辨同一個 scope 是不是有重複的 identifiers (variables)。

從前幾篇文章知道 function, block scopes 取決於在哪裡被定義,意味著在不同地方定義的 variables (花朵) ,那麼 scope (裝花朵的桶子)也會不同。
https://ithelp.ithome.com.tw/upload/images/20221026/201516327xxwYtbuXw.png
每個 variables 被塗上的顏色,取決於它在哪個桶子 (scope) 裡被宣告,而非它可以被哪些 scope 調用。
Reference variables 的規則就是:
Either in the current scope, or any scope above/outside the current scope, but not with declarations from lower/nested scopes.

總結兩個點:

  1. Variable 在所屬的 scope 裡宣告,把 variable 想成花朵,scope 想成裝花朵的桶子
  2. variable scope ( 花朵顏色、桶子 )在 compilation 就完成了。這些資訊是為了提供 execution 的 variable lookups。

上一篇
[ Day 20 ] I don't know JS yet - variables & scope ( in compilation)
下一篇
[ Day 22 ] I don't know JS yet
系列文
I don't know JS yet30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言