π‘ λ³μμ μμ± λ¨κ³
1. μ μΈλ¨κ³(Declaration phase)
λ³μ κ°μ²΄μ λ³μλ₯Ό λ±λ‘νλ€. μ΄ λ³μ κ°μ²΄λ μ€μ½νκ° μ°Έμ‘°νλ λμμ΄ λλ€.
2. μ΄κΈ°ν λ¨κ³ (Initialization phase)
λ³μ κ°μ²΄μ λ±λ‘λ λ³μλ₯Ό λ©λͺ¨λ¦¬μ ν λΉνλ€. μ΄ λ¨κ³μμ λ³μλ undefinedλ‘ μ΄κΈ°ν λλ€.
3. ν λΉ λ¨κ³( Assignment phase)
undefinedλ‘ μ΄κΈ°νλ λ³μμ μ€μ κ°μ ν λΉνλ€.
π‘ varμ λ¬Έμ μ
1. ν¨μ λ 벨 μ€μ½ν(Function-level scope)
- μ μ λ³μ λ¨λ°
- forλ¬Έ μ΄κΈ°νμμμ μ¬μ©ν λ³μλ₯Ό μΈλΆμμ μ°Έμ‘°ν μ μλ€.
2. var ν€μλ μλ΅ νμ©
- μλνμ§ μμ λ³μμ μ μν
3. μ€λ³΅ μ μΈ νμ©
- μλνμ§ μμ λ³μκ° λ³κ²½
4. λ³μ νΈμ΄μ€ν
- λ³μλ₯Ό μ μΈνκΈ° μ μ μ°Έμ‘°κ° κ°λ₯νλ€
π‘ νΈμ΄μ€ν
(Hoisting)μ΄λ?
- νΈμ΄μ€ν
μ var , let , const, function λ± λͺ¨λ μ μΈμ μ ν¨λ²μ(scope)μ λ°λΌ κ°μ₯ μλ‘ λμ΄μ¬λ¦¬λ κ²μ΄λ€.
- νΈμ΄μ€ν
μΌλ‘ μ΄κΈ°ν λ κ°μ μ μΈνκ³ μ μΈλ§ λμ΄ μ¬λ¦°λ€.
- μ μΈκ³Ό ν λΉμ λΆλ¦¬λΌκ³ μκ°νλ©΄ μ½λ€.
- μ ν¨λ²μμλ 'ν¨μλ 벨 μ€μ½ν'μ 'λΈλλ 벨 μ€μ½ν'λ‘ κ΅¬μ±λμ΄ μλ€.
- varλ ν¨μλ 벨 μ€μ½νμ΄κ³ let,constλ λΈλ λ 벨 μ€μ½νμ΄λ€.
- varλ μ΄κΈ° κ°μ΄ μλ€λ©΄ μ μΈμ λμμ undefinedλ‘ μ΄κΈ°ν λκΈ° λλ¬Έμ μ μΈ μ μλ μ¬μ©μ΄ κ°λ₯νλ€.
π‘ var , let , const λΉκ΅
|
var |
let |
const |
μ¬μ μΈκ°λ₯μ¬λΆ |
κ°λ₯ |
λΆκ°λ₯ |
λΆκ°λ₯ |
μ€μ½ν |
ν¨μλ 벨 |
λΈλλ 벨 |
λΈλλ 벨 |
μ΄κΈ°κ° |
μ ν |
μ ν |
νμ |
κ° μ¬ν λΉ μ¬λΆ |
κ°λ₯ |
κ°λ₯ |
λΆκ°λ₯ |
μ μΈ μ μ¬μ© |
κ°λ₯ |
λΆκ°λ₯ |
λΆκ°λ₯ |
π const μ let κ° λ³κ²½ μ¬λΆμμ ν·κ°λ¦΄μ μλ λΆλΆμ΄ μμ΄μ 첨μΈν΄λ³΄μλ©΄ (λλ ν·κ°λ Έλ€.)
μ¬κΈ°μ λ³κ²½μ κ°μ λ³κ²½μ΄ μλλΌ 'λ©λͺ¨λ¦¬ μ£Όμ'μ λ³κ²½μ΄λ€.
let μ λ©λͺ¨λ¦¬ μ£Όμ λ³κ²½μ΄ κ°λ₯ νκ³ const λ λ©λͺ¨λ¦¬ μ£Όμ λ³κ²½μ΄ λΆκ°λ₯νλ€.
let Arr = [];
Arr.push(1);
Arr.push(2);
Arr.push(3);
// Arr λ°°μ΄μμμ κ°μ΄ μΆκ°λμ§λ§ λ©λͺ¨λ¦¬ μ£Όμλ λ°λμ§ μλλ€.
// κ·Έλμ constλ₯Ό μ¬μ©ν΄λ λλ€.
const Arr = [];
Arr.push(1);
Arr.push(2);
Arr.push(3);
π‘ μμ
console.log(num); // undefined
var num;
μ°Έκ³
poiemaweb.com/es6-block-scope