ES5κΉμ§ λ³μλ₯Ό μ μΈν μ μλ μ μΌν λ°©λ²μ var ν€μλλ₯Ό μ¬μ©νλ κ²μ΄μμ§λ§,
var ν€μλλ‘ μ μΈνμ λμ μ¬κ°ν λ¬Έμ μ μ΄ λ°μν μ μμ΄ μ΄λ₯Ό 보μνκΈ° μν΄
ES6λΆν° letκ³Ό const ν€μλλ₯Ό λμ
νλ€.
15.1 var ν€μλλ‘ μ μΈν λ³μμ λ¬Έμ μ
15.1.1 λ³μ μ€λ³΅ μ μΈ νμ©
var ν€μλλ‘ μ μΈν λ³μλ μ€λ³΅ μ μΈμ΄ κ°λ₯νλ€. μ΄λ κ² μ€λ³΅ μ μΈμ΄ κ°λ₯νλ©΄
- μ΄κΈ°ν λ¬Έ(λ³μ μ μΈκ³Ό λμμ μ΄κΈ°κ°μ ν λΉνλ λ¬Έ) μ 무μ λ°λΌ λ€λ₯΄κ² λμνλ€.
- μ΄κΈ°ν λ¬Έμ΄ μλ λ³μ μ μΈμ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ var ν€μλκ° μλ κ²μ²λΌ λμνκ³
- μ΄κΈ°ν λ¬Έμ΄ μλ λ³μ μ μΈλ¬Έμ 무μλλ€. μ΄λ μλ¬λ λ°μνμ§ μλλ€.
- κ²λ€κ° λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄μ κ°κΉμ§ ν λΉνλ€λ©΄ μλμΉ μκ² λ¨Όμ μ μΈλ λ³μ κ°μ΄ λ³κ²½λλ λΆμμ©μ΄ λ°μνλ€.
15.1.2 ν¨μ λ 벨 μ€μ½ν
var ν€μλλ‘ μ μΈν λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘λ§μ ν¨μμ μ§μ μ€μ½νλ‘ μΈμ νλ€.
- λ°λΌμ ν¨μ μΈλΆμμ var ν€μλλ‘ μ μΈν λ³μλ μ½λ λΈλ‘ λ΄μμ μ μΈν΄λ λͺ¨λ μ μ λ³μκ° λλ€.
15.1.3 λ³μ νΈμ΄μ€ν
var ν€μλλ‘ λ³μλ₯Ό μ μΈνλ©΄ λ³μ νΈμ΄μ€ν μ μν΄ λ³μ μ μΈλ¬Έμ΄ μ€μ½νμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λ±μ₯νλ€.
- μ¦, λ³μ νΈμ΄μ€ν μ μν΄ var ν€μλλ‘ μ μΈν λ³μλ λ³μ μ μΈλ¬Έ μ΄μ μ μ°Έμ‘°ν μ μλ€.
- λ¨, ν λΉλ¬Έ μ΄μ μ λ³μλ₯Ό μ°Έμ‘°νλ©΄ undefinedλ₯Ό λ°ννλ€.
15.2 let ν€μλ
var ν€μλμ λ€λ₯Έ μ μ μ€μ¬μΌλ‘ μ΄ν΄λ³΄μ.
15.2.1 λ³μ μ€λ³΅ μ μΈ κΈμ§
let ν€μλλ‘ μ΄λ¦μ΄ κ°μ λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ λ¬Έλ² μλ¬(SyntaxError)κ° λ°μνλ€.
15.2.2 λΈλ‘ λ 벨 μ€μ½ν
let ν€μλλ‘ μ μΈν λ³μλ λͺ¨λ μ½λ λΈλ‘(ν¨μ, ifλ¬Έ, forλ¬Έ, whileλ¬Έ, try/catchλ¬Έ)μ μ§μ μ€μ½νλ‘ μΈμ νλ
λΈλ‘ λ 벨 μ€μ½ν(block-level scope)λ₯Ό λ°λ₯Έλ€.
- λ°λΌμ μ½λ λΈλ‘ λ΄μμ μ μΈλ λ³μλ μ§μ λ³μλ€.
- ν¨μλ μ½λ λΈλ‘μ΄λ―λ‘ μ€μ½νλ₯Ό λ§λ λ€. μ΄λ ν¨μ λ΄μ μ½λ λΈλ‘μ ν¨μ λ 벨 μ€μ½νμ μ€μ²©λλ€.
15.2.3 λ³μ νΈμ΄μ€ν
let ν€μλλ‘ μ μΈν λ³μλ λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
- var ν€μλλ‘ μ μΈν λ³μλ,
- λ°νμ μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ "μ μΈ λ¨κ³"μ "μ΄κΈ°ν λ¨κ³"λ₯Ό νλ²μ μ§νν΄μ
- λ³μ μ μΈλ¬Έ μ΄μ μ λ³μμ μ κ·Όν΄λ μ°Έμ‘°κ° κ°λ₯νλ€.
let ν€μλλ‘ μ μΈν λ³μλ μ μΈ λ¨κ³μ μ΄κΈ°ν λ¨κ³κ° λΆλ¦¬λμ΄ μ§νλλ€.
- μ¦, λ°νμ μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ μ μΈ λ¨κ³κ° λ¨Όμ μ€νλμ§λ§,
- μ΄κΈ°ν λ¨κ³λ λ³μ μ μΈλ¬Έμ λλ¬νμ λ μ€νλλ€.
- let ν€μλλ‘ μ μΈν λ³μλ, μ€μ½νμ μμ μ§μ λΆν° μ΄κΈ°ν λ¨κ³ μμ μ§μ (λ³μ μ μΈλ¬Έ)κΉμ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ€.
- let ν€μλλ‘ μ μΈν λ³μλ μ΄κΈ°ν μ κΉμ§ μ°Έμ‘°ν μ μλλ° μ΄ κ΅¬κ°μ μΌμμ μ¬κ°μ§λ(Temporal Dead Zone)λΌκ³ νλ€.
μλ°μ€ν¬λ¦½νΈλ ES6μμ λμ λ let, constλ₯Ό ν¬ν¨ν΄μ λͺ¨λ μ μΈ(var, let, const, function*, class λ±)μ νΈμ΄μ€ν νλ€.
λ¨, ES6μμ λμ λ let, const, classλ₯Ό μ¬μ©ν μ μΈλ¬Έμ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
15.2.4 μ μ κ°μ²΄μ let
let ν€μλλ‘ μ μΈν μ μ λ³μλ μ μ κ°μ²΄μ νλ‘νΌν°κ° μλλ€.
15.3 const ν€μλ
const ν€μλλ μμ(constant)λ₯Ό μ μΈνκΈ° μν΄ μ¬μ©λμ§λ§, λ°λμ κ·Έλ°κ²μ μλλ€.
const ν€μλμ νΉμ§μ let ν€μλμ λλΆλΆ λμΌνλ―λ‘ let ν€μλμ λ€λ₯Έ μ μ μ€μ¬μΌλ‘ μ΄ν΄λ³΄μ.
15.3.1 μ μΈκ³Ό μ΄κΈ°ν
const ν€μλλ‘ μ μΈν λ³μλ λ°λμ μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ νλ€.
- λν const ν€μλλ‘ μ μΈν λ³μλ let ν€μλλ‘ μ μΈν λ³μμ λ§μ°¬κ°μ§λ‘ λΈλ‘ λ 벨 μ€μ½νλ₯Ό κ°μ§λ©°
- λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
15.3.2 μ¬ν λΉ κΈμ§
var, let ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ μμ λ‘μ°λ const ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ κΈμ§λλ€.
15.3.3 μμ
cosnt ν€μλλ‘ μ μΈλ λ³μμ μμ κ°μ ν λΉν κ²½μ° λ³μ κ°μ λ³κ²½ν μ μλ€.
- μμ κ°μ λ³κ²½ λΆκ°λ₯ν κ°(immutable value)μ΄λ―λ‘
- μ¬ν λΉ μμ΄ κ°μ λ³κ²½ν μ μλ λ°©λ²μ΄ μκΈ° λλ¬Έμ΄λ€.
- μ΄λ¬ν νΉμ§μ μ΄μ©ν΄ μμλ₯Ό νννλ λ° μ¬μ©νκΈ°λ νλ€.
- λ³μμ μλ κ°λ
μΈ μμλ μ¬ν λΉμ΄ κΈμ§λ λ³μλ₯Ό λ§νλ€.
- μμλ κ°μ μ μ₯νκΈ° μν λ©λͺ¨λ¦¬ 곡κ°μ΄ νμνλ―λ‘ λ³μλΌκ³ ν μ μμ§λ§,
- λ³μλ μΈμ λ μ§ μ¬ν λΉμ ν΅ν΄ λ³μκ°μ λ³κ²½ν μ μμ§λ§, μμλ μ¬ν λΉμ΄ κΈμ§λλ€.
- λ³μμ μλ κ°λ
μΈ μμλ μ¬ν λΉμ΄ κΈμ§λ λ³μλ₯Ό λ§νλ€.
- μ¦, cosnt ν€μλλ‘ μ μΈλ λ³μμ μμ κ°μ ν λΉν κ²½μ° μμ κ°μ λ³κ²½ν μ μλ κ°μ΄κ³ ,
- const ν€μλμ μν΄ μ¬ν λΉμ΄ κΈμ§λλ―λ‘ ν λΉλ κ°μ λ³κ²½ν μ μλ λ°©λ²μ μλ€.
- κ·Έλ¦¬κ³ μμ λ³μλ ꡬλΆνκΈ° μν΄, λ³μ μ΄λ¦μ μ€λ€μ΄ν¬ μΌμ΄μ€λ‘ νννλ κ²μ΄ μΌλ°μ μ΄λ€.
const MAX_NUMBER = 100;
const FIRST_NAME = 'april';
15.3.4 const ν€μλμ κ°μ²΄
const ν€μλλ‘ μ μΈλ λ³μμ κ°μ²΄λ₯Ό ν λΉν κ²½μ° κ°μ λ³κ²½ν μ μλ€.
- const ν€μλλ μ¬ν λΉμ κΈμ§ν λΏ λΆλ³μ μλ―Ένμ§ μλλ€.
15.4 var vs let vs const
λ³μ μ μΈμλ κΈ°λ³Έμ μΌλ‘ constλ₯Ό μ¬μ©νκ³ letμ μ¬ν λΉμ΄ νμν κ²½μ°μ νμ ν΄ μ¬μ©νλ κ²μ΄ μ’λ€.
- ES6λ₯Ό μ¬μ©νλ€λ©΄ var ν€μλλ μ¬μ©νμ§ μλλ€.
- μ¬ν λΉμ΄ νμν κ²½μ°μ νμ ν΄ let ν€μλλ₯Ό μ¬μ©νλ€. μ΄ λ λ³μμ μ€μ½νλ μ΅λν μ’κ² λ§λ λ€.
- λ³κ²½μ΄ λ°μνμ§ μκ³ μ½κΈ° μ μ©μΌλ‘ μ¬μ©νλ(μ¬ν λΉμ΄ νμ μλ μμ) μμ κ°κ³Ό κ°μ²΄μλ
- const ν€μλλ₯Ό μ¬μ©νλ€. const ν€μλλ μ¬ν λΉμ κΈμ§νλ―λ‘ var, let ν€μλλ³΄λ€ μμ νλ€.
'π Book-Talk > λͺ¨λ JS Deep Dive' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μμ±μ ν¨μμ μν κ°μ²΄ μμ± (0) | 2022.11.15 |
---|---|
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ μ λ³μμ λ¬Έμ μ (0) | 2022.11.15 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μ€μ½ν (0) | 2022.11.11 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_ν¨μ (0) | 2022.11.11 |
λͺ¨λ μλ°μ€ν¬λ¦½νΈ Deep Dive_μμ κ°κ³Ό κ°μ²΄μ λΉκ΅ (0) | 2022.11.11 |