14.1 λ³μμ μλͺ μ£ΌκΈ°
14.1.1 μ§μ λ³μμ μλͺ μ£ΌκΈ°
μ§μ λ³μμ μλͺ μ£ΌκΈ°λ ν¨μμ μλͺ μ£ΌκΈ°μ μΌμΉν©λλ€.
function foo() {
var x = 'local' // λ³μ x μμ±, λ³μ xμ κ° ν λΉ
console.loog(x)
return x // λ³μ μλ©Έ
}
foo();
console.log(x); // x is not defined
νΈμ΄μ€ν μ μ€μ½νλ₯Ό λ¨μλ‘ λμν©λλ€. νΈμ΄μ€ν μ λ³μ μ μΈμ΄ μ€μ½νμ΄ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ JS κ³ μ μ νΉμ§μ λ§ν©λλ€.
14.1.2 μ μ λ³μμ μλͺ μ£ΌκΈ°
ν¨μμ λ¬λ¦¬ μ μ μ½λλ λͺ μμ μΈ νΈμΆ μμ΄ μ€νλ©λλ€. var ν€μλλ‘ μ μΈν μ μ λ³μλ μ μ κ°μ²΄μ νλ‘νΌν°κ° λ©λλ€. μ΄λ μ μ λ³μμ μλͺ μ£ΌκΈ°κ° μ μ κ°μ²΄μ μλͺ μ£ΌκΈ°μ μΌμΉνλ€λ κ²μ λ§ν©λλ€.
μ μκ°μ²΄ (golbal object)
μ½λκ° μ€νλκΈ° μ΄μ λ¨κ³μ JSμμ§μ μν΄ μ΄λ€ κ°μ²΄λ³΄λ€λ λ¨Όμ μμ±λλ νΉμν κ°μ²΄μ λλ€. ν΄λΌμ΄μΈνΈ μ¬μ΄λ(λΈλΌμ°μ ) νκ²½μμλ window, μλ²μ¬μ΄λ(Node.js) νκ²½μμλ global κ°μ²΄λ₯Ό μλ―Έν©λλ€.
λΈλΌμ°μ νκ²½μμ var ν€μλλ‘ μ μΈν μ μ λ³μλ μΉνμ΄μ§λ₯Ό λ«μ λκΉμ§ μ ν¨ν©λλ€. μ¦ var ν€μλλ‘ μ μΈν μ μ λ³μμ μλͺ μ£ΌκΈ°μ μΌμΉν©λλ€.
14.2 μ μ λ³μμ λ¬Έμ μ
μ묡μ κ²°ν© (implicit coupling)
μ μ λ³μλ₯Ό μ μΈν μλλ μ μ, μ¦ μ½λ μ΄λμλ μ°Έμ‘°νκ³ ν λΉν μ μκΈ° λλ¬Έμ μ묡μ κ²°ν©μ νμ©νλ€λ μλ―Έμ λλ€. μ ν¨ λ²μκ° κΈΈλ©΄ μ½λ κ°λ μ±μ λ¨μ΄μ§κ³ , μλμΉ μκ² μνκ° λ³κ²½λ μ μμ΅λλ€.
κΈ΄ μλͺ μ£ΌκΈ°
μ μλ³μλ μλͺ μ£ΌκΈ°κ° κΉλλ€.
μ€μ½ν μ²΄μΈ μμμ μ’ μ μ μ‘΄μ¬
μ μ λ³μλ μ€μ½ν μ²΄μΈ μμ μ’ μ μ μ‘΄μ¬νκΈ° λλ¬Έμ μ μ λ³μμ κ²μ μλκ° κ°μ₯ λ립λλ€.
λ€μνμ΄μ€ μ€μΌ
νμΌμ΄ λΆλ¦¬λμ΄ μλ€ νλλΌλ νλμ μ μ μ€μ½νλ₯Ό 곡μ νλ©΄ μμμΉ λͺ»ν κ²°κ³Όλ₯Ό κ°μ Έμ¬ μ μμ΅λλ€.
14.3 μ μ λ³μμ μ¬μ©μ μ΅μ νλ λ°©λ²
μ μ λ³μλ₯Ό λ°λμ μ¬μ©ν΄μΌ ν μ΄μ λ₯Ό μ°Ύμ§ λͺ»νλ€λ©΄ μ§μ λ³μλ₯Ό μ¬μ©ν΄μΌ ν©λλ€.
14.3.1 μ¦μ μ€ν ν¨μ
ν¨μ μ μμ λμμ νΈμΆλλ μ¦μ μ€ν ν¨μλ νλ²λ§ νΈμΆλλ―λ‘ λͺ¨λ λ³μλ μ¦μ μ€ν ν¨μμ μ§μ λ³μκ° λλλ€.
(function () {
var foo = 10;
}())
14.3.2 λ€μμ€νμ΄μ€ κ°μ²΄
μ μμ λ€μμ€νμ΄μ€ μν μ λ΄λΉν κ°μ²΄λ₯Ό μμ±νκ³ μ μ λ³μμ²λΌ μ¬μ©νκ³ μΆμ λ³μλ₯Ό νλ‘νΌν°λ‘ μΆκ°νλ λ°©λ²μ λλ€.
14.3.3 λͺ¨λ ν¨ν΄
λͺ¨λ ν¨ν΄μ ν΄λμ€λ₯Ό λͺ¨λ°©ν΄μ κ΄λ ¨μ΄ μλ λ³μμ ν¨μλ₯Ό λͺ¨μ μ¦μ μ€ν ν¨μλ‘ κ°μΈ νλμ λͺ¨λμ λ§λλλ€.
14.3.4 ES6 λͺ¨λ
ES6 λͺ¨λμ μ¬μ©νλ©΄ λλ μ μ λ³μλ₯Ό μ¬μ©ν μ μμ΅λλ€. νμΌ μ체μ λ μμ μΈ λͺ¨λ μ€μ½νλ₯Ό μ 곡νκΈ° λλ¬Έμ λλ€.
<script type="module" src="lib.mjs"></script>
<script type="module" src="app.mjs"></script>
Reference: λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive