μ€ν κ°λ₯ν μ½λκ° μ€νλ λ μ 곡ν νκ²½ μ 보λ€μ λͺ¨μλμ κ°μ²΄
- μ μ 곡κ°μ μ½λ
- eval()
- ν¨μ νΈμΆ
νμ¬ μ€νμ€μΈ μ½λμ κ΄λ ¨μλ μ½λκ° μ€νλλ©΄(μ. μλ‘μ΄ ν¨μ νΈμΆ) μλ‘μ΄ μ»¨ν μ€νΈλ₯Ό μμ±νκ³ μ½μ€νμ μλλ€. μ€νμ€μ΄λ μ½λκ° μ’ λ£λλ©΄ ν΄λΉ 컨ν μ€νΈκ° μ κ±°λκ³ , μ΅ μμμ μ¬λΌμ¨ μ€ν 컨ν μ€νΈμ κ΄λ ¨λ μ½λλ₯Ό λ§μ μ€ννλ€. JSλ μ½μ€νμ μ΄μ©νμ¬ μ 체 μ½λμ νκ²½κ³Ό μμλ₯Ό 보μ₯νλ€.
μ μ 컨ν μ€νΈλ μ½μ€νμ κ°μ₯ νμμ μ‘΄μ¬νλ€.λΈλΌμ°μ κ° μλμΌλ‘ μ€ννλ©°, μ±μ΄ μ’ λ£λ λκΉμ§ μ μ§λλ€.
- μ€ν: νμ μ μΆ(LIFO: Last In First Out)
- ν: μ μ μ μΆ(FIFO: First In First Out)
- μλ³μ + μΈλΆ νκ²½ μ 보
- λ³μλͺ
- 맀κ°λ³μμ μΈμ
- ν¨μ μ μΈ(ννμ μ μΈ)
- μ μΈμμ μ Lexical Environmentμ μ€λ μ·μΌλ‘ λ³κ²½μ λ°μνμ§ μμ
- 맀κ°λ³μ: μΈμ
- ν¨μλͺ : ν¨μ
- λ³μλͺ : undefined
ν¨μ μ μΈμ λ¨Όμ μ²λ¦¬ν νμ λ³μ μ μΈμ μ²λ¦¬νκΈ° λλ¬Έμ, μ½λμ ν¨μ aκ° λμ€μ μ μΈλμμΌλ λ§μ§λ§ console.log(a)
μ κ²°κ³Όλ ν¨μκ° μλ λ³μ aμ κ°μ΄ λλ€.
- Variable Environmentλ₯Ό 볡μ¬ν΄μ μμ±
- λ³κ²½μ΄ μ€μκ° λ°μλ¨
- μ μ μ€ν 컨ν μ€νΈλ μ μ κ°μ²΄ μ¬μ©
- μλ³μ μ 보 μ μ₯(λ³μλ μ μΈλ§ μ μ₯νκ³ ν λΉμ μ μ₯νμ§ μμ)
- μμλλ‘ μμ§(μμ κ°μ²΄ μμ± μμ μ°Έμ‘°)
- μμ§μ λ§μΉ μμ μ μμ§ μ½λκ° μ€νλκΈ° μ
- μ½λκ° μ€νλκΈ° μ μ μλ³μ μ 보λ₯Ό μ μ₯ν΄ λ κ²μ΄ νΈμ΄μ€ν μ μ 체!
- μ μ 컨ν μ€νΈλ μ무 κ°λ κ°μ§μ§ μμ
- ν¨μκ° μ μΈλ λΉμμ Lexical Environment μ°Έμ‘°
- μ°κ²° 리μ€νΈ(linked list)
- μ€μ½ν: μλ³μμ λν μ ν¨λ²μ
- ES5κΉμ§λ μ λΆ ν¨μ μ€μ½ν
- let, const, class, μ격 λͺ¨λμμ λΈλ‘ μ€μ½ν
- μ€μ½ν체μΈ: μ€μ½νλ₯Ό μμμ λ°μΌλ‘ μ°¨λ‘λ‘ κ°μ²΄μ νλ‘νΌν°κ° μλ(μ μ κ°μ²΄ μ μΈ) μλ³μλ₯Ό κ²μν΄ λκ°λ κ²
- (λΉκ΅) νλ‘ν νμ 체μΈ: κ°μ²΄μ νλ‘νΌν°(λ©μλ ν¬ν¨)λ₯Ό κ²μνλ λ©μ»€λμ¦
-
ν¨μ μ μΈλ¬Έ:
function a() {}
- λ°λμ κΈ°λͺ ν¨μ
-
ν¨μ ννμ:
var a = function() {}
- ν¨μλ₯Ό κ°μΌλ‘ ν λΉ
- μ΅λͺ ν¨μλ μ¬μ© κ°λ₯(κ³Όκ±° λΈλΌμ°μ λ μ΅λͺ ν¨μλ₯Ό μ¬μ©ν κ²½μ° λλ²κΉ μ ν¨μ μ΄λ¦μ νμν΄μ£Όμ§ μμλ€. νμ§λ§ μ§κΈμ μ λμ΄.)
- νΈμ΄μ€ν μ μ μΈλ§!
var c = function d() {}; c(); // ok d(); // error
-
νΈμ΄μ€ν μΌλ‘ μΈν νΌλμ λ°©μ§νκΈ° μν΄ ν¨μ ννμμ μ¬μ©νλ κ²μ΄ μ’λ€!
- this μλ³μ λμ κ°μ²΄
- μ€ν 컨ν μ€νΈλ₯Ό νμ±ννλ λΉμ μ§μ λ this μ μ₯
- thisλ ν¨μ νΈμΆ ν¨ν΄μ λ°λΌ λ¬λΌμ§λ€
- [μ½μ΄μλ°μ€νΈλ¦½νΈ - μ μ¬λ¨ μ ] Chapter2. μ€ν 컨ν μ€νΈ
- μ€ν컨ν μ€νΈμ μλ°μ€ν¬λ¦½νΈμ λμ μ리