Skip to content

Hoisting #135

Open
Open
@Agby

Description

@Agby

https://blog.techbridge.cc/2018/11/10/javascript-hoisting/

  1. 什麼是 Hoisting
    提升, 也就是

  2. 為什麼要 Hoisting <> 如果沒有

  • 一定要先變數才能用
  • 一定要先宣告 function 才能用
  • 沒有辦法達成 function 互相呼叫
  1. 運作方式
  • EC (Execution Contexts)/ global EC / VO (Variable Object) - 簡單來說就是有自己的 scope 不會把所有的 function/ 變數 提升到 global 的層級
  • hoisting 只會提升宣告而非賦值
  • 順序
    1.把參數放到 VO 裡面並設定好值,傳什麼進來就是什麼,沒有值的設成 undefined
    2.把 function 宣告放到 VO 裡,如果已經有同名的就覆蓋掉
    3.把變數宣告放到 VO 裡,如果已經有同名的則忽略
    4. 嚴格模式的運作方式不一樣
  1. TDZ (Temporal Dead Zone)
  • let const 初始化不是 undefined
  • 在被賦值前的這段時間就叫 TDZ
  • 是一個時間上的概念 而不是空間上的

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions