๐Ÿ’ช JavaScript. Execution Context

[meษช]ยท2022๋…„ 2์›” 25์ผ
0

1-2. Today I Learned. JavaScript

๋ชฉ๋ก ๋ณด๊ธฐ
7/8

Preface

๐Ÿ“Œ ๊ฐœ๋ฐœ ๊ณต๋ถ€ 6๊ฐœ์›” ์ฐจ์ธ to-be ๊ฐœ๋ฐœ์ž์˜ ์ž์Šต blog๐Ÿ™‚๏พ Feb 20 ~ 26, 2022


Execution Context

: code๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ์— ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด
*ํ™˜๊ฒฝ : code ์‹คํ–‰์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์กฐ๊ฑด์ด๋‚˜ ์ƒํƒœ


Keywords

  • scope chain = execution context chain
    • Global Execution Conte xt : Global Object (GO)
      • this object
      • window object
    • Function Execution Context = Activation Object (AO)
    • Eval Execution Context
      • Global Object (GO)
        • built in ๊ฐ์ฒด (Math, String etc.)
        • BOM
        • DOM
        • ์ „์—ญ ๋ณ€์ˆ˜
      • Activation Object (AO)
        • ํ•จ์ˆ˜ ์„ ์–ธ
        • ๋งค๊ฐœ ๋ณ€์ˆ˜
        • ๋ณ€์ˆ˜
  • lexical environment
    = lexical scope
    = ์ •์  ํ™˜๊ฒฝ
    = environment record + outer environment reference
  • environment record : ์‹๋ณ„์ž์™€ ์‹๋ณ„์ž์— binding๋œ ๊ฐ’์„ ๊ธฐ๋กํ•ด๋‘๋Š” ๊ฐ์ฒด
    ์ฒ˜์Œ์— JavaScript engine์ด ์ „์ฒด code๋ฅผ scanํ•˜๋ฉด์„œ ๋ณ€์ˆ˜๊ฐ™์€ ์ •๋ณด๋ฅผ ๋ฏธ๋ฆฌ ๊ธฐ๋กํ•ด๋‘๋Š” ๊ณณ
  • outer environment reference : ๋ฐ”๊นฅ lexical environment๋ฅผ ๊ฐ€๋ฆฌํ‚ด

STEP 1. Creation Phrase

: Execution Context ์ƒ์„ฑ
ย ย ์„ ์–ธ๋ฌธ๋งŒ ์‹คํ–‰ํ•ด์„œ environment record์— ๊ธฐ๋ก

  • GO, AO, this ํ˜•์„ฑ
    • environment record
      • ๋ณ€์ˆ˜ hoisting
        • var๋Š” ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ๋ชจ๋‘ ํ•ด ํ• ๋‹น๋ฌธ ์ „์—๋„ 'undefined'๋ผ๋Š” ๊ฐ’์„ ์ฝ์ง€๋งŒ,
        • let๊ณผ const๋Š” ์„ ์–ธ๋งŒ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ• ๋‹น๋ฌธ ์ „๊นŒ์ง€ ๋ณ€์ˆ˜์— ์•„๋ฌด๋Ÿฐ ๊ฐ’์ด ๋‹ด๊ธฐ์ง€ ์•Š์•„ ์œ ํšจํ•œ ๊ฐ’์„ ์ฝ์–ด์˜ฌ ์ˆ˜ ์—†์Œ ("์„ ์–ธ ์ „์—๋Š” ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์—†์Œ"์—์„œ '์„ ์–ธ ์ „' ์˜์—ญ = Temporal Dead Zone)
          โ€ป declaration : memory ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  memory ์ฃผ์†Œ๋ฅผ ์‹๋ณ„์ž์™€ ์—ฐ๊ฒฐ
          โ€ป initialization : ์‹๋ณ„์ž์— ์•”๋ฌต์ ์œผ๋กœ undefined ๊ฐ’์„ bindingํ•˜์—ฌ ์ดˆ๊ธฐํ™”
      • ํ•จ์ˆ˜ hoisting
        • ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ hoisting๊ณผ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ (ํ™”์‚ดํ‘œํ•จ์ˆ˜)
        • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ์„ ์–ธ๊ณผ ๋™์‹œ์— ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์„ ์–ธ ์ „์—๋„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ (function ํ•จ์ˆ˜)
    • outer environment reference
      • ์‹๋ณ„์ž ๊ฒฐ์ • : code์—์„œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ
      • ๋ณ€์ˆ˜ shadowing : ๋™์ผํ•œ ์‹๋ณ„์ž๋กœ ์ธํ•ด ์ƒ์œ„ (outer) scope์—์„œ ์„ ์–ธ๋œ ์‹๋ณ„์ž์˜ ๊ฐ’์ด ๊ฐ€๋ ค์ง€๋Š” ํ˜„์ƒ
      • scope chain : ์‹๋ณ„์ž๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ํ™œ์šฉํ•˜๋Š” scope๋“ค์˜ ์—ฐ๊ฒฐ list

STEP 2. Execution Phrase

: ์„ ์–ธ๋ฌธ ์™ธ ๋‚˜๋จธ์ง€ code๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰
ย ย ํ•„์š” ์‹œ environment record๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ update

  • GO, AO, this
    • ๊ฐ’ ํ• ๋‹น
    • this๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ pattern ๋˜๋Š” lexical scope์— ๋”ฐ๋ผ ๊ฐ’์ด ์ •ํ•ด์ง


Endnote

๐Ÿ™‡ the source of this content

ํฐ๋Œ์˜ํ„ฐ์ „ - ์‹คํ–‰์ปจํ…์ŠคํŠธ
์šฐ์•„ํ•œTech - [10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿ’™ ํ•˜๋ฃจ์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ

profile
๋Š๋ ค๋„ ํ•  ๊ฑฐ์•ผ.......

0๊ฐœ์˜ ๋Œ“๊ธ€