μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- λ°λΈμ½μ€
- λΈλ‘κ·Έ
- fetch API
- useEffect
- CSS
- λ°λΈμ½μ€3κΈ°
- REACT
- Props
- Gatsby
- νλ‘κ·Έλλ¨Έμ€
- μλ°μ€ν¬λ¦½νΈ
- μ½λ©ν μ€νΈ
- position
- Flex
- float
- history api
- μκ³ λ¦¬μ¦
- useRef
- νλ‘ νΈμλ
- Today
- Total
Daehyunii's Dev-blog
15μ₯ let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν λ³Έλ¬Έ
15μ₯ let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν
Daehyunii 2022. 7. 6. 17:5815.1 var ν€μλλ‘ μ μΈν λ³μμ λ¬Έμ μ
ES5κΉμ§ λ³μλ₯Ό μ μΈν μ μλ μ μΌν λ°©λ²μ var ν€μλλ₯Ό μ¬μ©νλ κ²μ΄μλ€. var ν€μλλ‘ μ μΈλ λ³μλ λ νΉν νΉμ§μ΄ μλ€.
15.1.1 λ³μ μ€λ³΅ μ μΈ νμ©
var ν€μλλ‘ μ μΈν λ³μλ μ€λ³΅ μ μΈμ΄ κ°λ₯νλ€.
var x = 1; // λ³μ μ μΈ λ° κ°μ ν λΉ
var x = 100; // μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ var ν€μλκ° λ¬΄μλκ³ x λ³μμ μ¬ν λΉμ΄ μ΄λ€μ§λ€.
console.log(x); // 100
15.1.2 ν¨μ λ 벨 μ€μ½ν
μμμ μ 리ν λ΄μ©κ³Ό κ°μ΄ var ν€μλλ‘ μ μΈν λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€. λ°λΌμ ν¨μ μΈλΆμμ var ν€μλλ‘ μ μΈν λ³μλ μ½λ λΈλ‘ λ΄μμ μ μΈν΄λ λͺ¨λ μ μ λ³μκ° λλ€.
var x = 1; // μ μ λ³μ x
if(true){
var x = 10; // μ μ λ³μ x (var ν€μλ 무μλκ³ μ¬ν λΉμ΄ μ΄λ€μ§λ€.)
}
console.log(x); // 10
for λ¬Έμ λ³μ μ μΈλ¬Έμμ var ν€μλλ‘ μ μΈν λ³μλ μ μ λ³μκ° λλ€.
var i = 10;
for (var i = 0 ; i < 5 ; i++){
console.log(i); // 0 1 2 3 4
}
console.log(i); // 5
μ΄μ²λΌ ν¨μ λ 벨 μ€μ½νλ μ μ λ³μλ₯Ό λ¨λ°ν κ°λ₯μ±μ λμΈλ€. μ΄λ‘ μΈν΄ μλμΉ μκ² μ μ λ³μκ° μ€λ³΅ μ μΈλλ κ²½μ°κ° λ°μνλ€.
15.1.3 λ³μ νΈμ΄μ€ν
var ν€μλλ‘ λ³μλ₯Ό μ μΈνλ©΄ λ³μ νΈμ΄μ€ν μ μν΄ λ³μ μ μΈλ¬Έμ΄ μ€μ½νμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ€. μ¦ λ³μ νΈμ΄μ€ν μ μν΄ var ν€μλλ‘ μ μΈν λ³μλ λ³μ μ μΈλ¬Έ μ΄μ μ μ°Έμ‘°ν μ μλ€. λ¨ ν λΉλ¬Έ μ΄μ μ λ³μλ₯Ό μ°Έμ‘°νλ©΄ μΈμ λ undefinedλ₯Ό λ°ννλ€. λ³μ μ μΈλ¬Έ μ΄μ μ λ³μλ₯Ό μ°Έμ‘°νλ κ²μ λ³μ νΈμ΄μ€ν μ μν΄ μλ¬λ₯Ό λ°μμν€μ§λ μμ§λ§ νλ‘κ·Έλ¨μ νλ¦μ λ§μ§ μμλΏλλ¬ κ°λ μ±μ λ¨μ΄νΈλ¦¬κ³ μ€λ₯λ₯Ό λ°μμν¬ μ¬μ§λ₯Ό λ¨κΈ΄λ€.
console.log(foo); // undefined
foo = 1004;
console.log(foo); // 1004
var foo;
15.2 let ν€μλ
var ν€μλμ λ¨μ μ 보μνκΈ° μν΄ ES6μμλ μλ‘μ΄ λ³μ μ μΈ ν€μλμΈ let ν€μλμ const ν€μλλ₯Ό λμ νλ€.
15.2.2 λ³μ μ€λ³΅ μ μΈ κΈμ§(λμΌ μ€μ½ν λ΄μμ)
var ν€μλλ‘ μ΄λ¦μ΄ λμΌν λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ μλ¬΄λ° μλ¬κ° λ°μνμ§ μμ§λ§, let ν€μλλ‘ μ΄λ¦μ΄ κ°μ λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ λ¬Έλ² μλ¬κ° λ°μνλ€.
15.2.2 λΈλ‘ λ 벨 μ€μ½ν
var ν€μλλ‘ μ μΈν λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ ν¨μ λ 벨 μ€μ½νλ₯Ό λ°λ₯΄μ§λ§, let ν€μλλ‘ μ μΈν λ³μλ λͺ¨λ μ½λ λΈλ‘(ν¨μ, ifλ¬Έ, forλ¬Έ, whileλ¬Έ, try/catchλ¬Έ λ±)μ μ§μ μ€μ½νλ‘ μΈμ νλ λΈλ‘ λ 벨 μ€μ½νλ₯Ό λ°λ₯Έλ€.
let foo = 1; // μ μ λ³μ
{
let foo = 2; // μ§μ λ³μ
let bar = 3; // μ§μ λ³μ
}
console.log(foo); // 1
console.log(bar); // ReferenceError λ°μ
15.2.3 λ³μ νΈμ΄μ€ν
var ν€μλλ‘ μ μΈν λ³μμ λ¬λ¦¬ let ν€μλλ‘ μ μΈν λ³μλ λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
console.log(foo); // RefrenceError λ°μ
let foo;
μ΄μ²λΌ let ν€μλλ‘ μ μΈν λ³μλ₯Ό λ³μ μ μΈλ¬Έ μ΄μ μ μ°Έμ‘°νλ©΄ μ°Έμ‘° μλ¬κ° λ°μνλ€. μ΄λ‘ μΈν΄ λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ 보μ΄λ, λ΄λΆμ μΌλ‘ νΈμ΄μ€ν μ μΌμ΄λλ€. var ν€μλλ‘ μ μΈν λ³μλ λ°νμ μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ 'μ μΈ λ¨κ³'μ 'μ΄κΈ°ν λ¨κ³'κ° νλ²μ μ§νλλ€.(4μ₯ μ°Έμ‘°) νμ§λ§, let ν€μλλ‘ μ μΈν λ³μλ 'μ μΈ λ¨κ³'μ 'μ΄κΈ°ν λ¨κ³'κ° λΆλ¦¬λμ΄ μ§νλλ€. μ¦ λ°νμ μ΄μ μ μλ°μ€ν¬λ¦½νΈ μμ§μ μν΄ μ묡μ μΌλ‘ μ μΈ λ¨κ³κ° λ¨Όμ μ€νλκ³ , μ΄κΈ°ν λ¨κ³λ λ°νμ ν λ³μ μ μΈλ¬Έμ λλ¬νμ λ μ€νλλ€.
κ·Έλ κΈ° λλ¬Έμ μ΄κΈ°ν λ¨κ³κ° μ€νλκΈ° μ΄μ μ λ³μμ μ κ·Όνλ €κ³ νλ©΄ μ°Έμ‘° μλ¬κ° λ°μνλ€. μ€μ½νμ μμ μ§μ λΆν° μ΄κΈ°ν μμ μ§μ κΉμ§ λ³μλ₯Ό μ°Έμ‘°ν μ μλ ꡬκ°μ μΌμμ μ¬κ°μ§λ(Temporal Dead Zone)λΌκ³ λΆλ₯Έλ€.
<var ν€μλ λ³μ μ μΈ case> | μ μΈ λ¨κ³ | μ΄κΈ°ν λ¨κ³ | foo === undefined |
var foo; (λ³μ μ μΈ) | |||
foo = 1; (ν λΉ) | ν λΉ λ¨κ³ | foo === 1 |
<let ν€μλ λ³μ μ μΈ case> | μ μΈλ¨κ³ | foo λ³μ μ°Έμ‘°μ, μ°Έμ‘° μλ¬ λ°μ |
μΌμμ μ¬κ°μ§λ(TDZ) | ||
let foo; (λ³μ μ μΈ) | μ΄κΈ°ν λ¨κ³ | foo === undefined |
foo = 1; (ν λΉ) | ν λΉ λ¨κ³ | foo === 1 |
μλ°μ€ν¬λ¦½νΈλ ES6μμ λμ λ let, constλ₯Ό ν¬ν¨ν΄μ λͺ¨λ μ μΈμ νΈμ΄μ€ν νλ€. λ¨ ES6μμ λμ λ let, const, classλ₯Ό μ¬μ©ν μ μΈλ¬Έμ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λ³΄μΌ λΏμ΄λ€.
15.3 const ν€μλ
const ν€μλλ μμλ₯Ό μ μΈνκΈ° μν΄ μ¬μ©νλ€. const ν€μλμ νΉμ§μ let ν€μλμ λλΆλΆ λμΌνμ§λ§ λͺκ°μ§ λ€λ₯Έ μ λ€μ΄ μλ€.
15.3.1 μ μΈκ³Ό μ΄κΈ°ν
const ν€μλλ‘ μ μΈν λ³μλ λ°λμ μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ νλ€. κ·Έλ μ§ μμΌλ©΄ λ¬Έλ² μλ¬κ° λ°μνλ€. const ν€μλλ‘ μ μΈν λ³μλ let ν€μλλ‘ μ μΈν λ³μμ λ§μ°¬κ°μ§λ‘ λΈλ‘ λ 벨 μ€μ½νλ₯Ό κ°μ§λ©°, λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.(TDZμμ)
const foo = 1; // μ μΈκ³Ό λμμ μ΄κΈ°ν
const bar; // SyntaxError λ°μ
15.3.2 μ¬ν λΉ κΈμ§
var λλ let ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ μμ λ‘μ°λ const ν€μλλ‘ μ μΈν λ³μλ μ¬ν λΉμ΄ κΈμ§λλ€.
15.3.3 μμ
const ν€μλλ‘ μ μΈν λ³μμ μμ κ°μ ν λΉν κ²½μ° λ³μ κ°μ λ³κ²½ν μ μλ€.(μ¬ν λΉλ λΆκ°λ₯νλ―λ‘) μ΄λ¬ν νΉμ§μ μ΄μ©ν΄ μμλ₯Ό νννλ λ° μ¬μ©νκΈ°λ νλ€. λ³μμ μλ κ°λ μΈ μμλ μ¬ν λΉμ΄ κΈμ§λ λ³μλ₯Ό λ§νλ€. μμλ μν μ μ§μ κ°λ μ±, μ μ§λ³΄μμ νΈμλ₯Ό μν΄ μ κ·Ήμ μΌλ‘ μ¬μ©ν΄μΌ νλ€. μΌλ°μ μΌλ‘ μμμ μ΄λ¦μ λλ¬Έμλ‘ μ μΈν΄ μμμμ λͺ νν λνλΈλ€. μ¬λ¬ λ¨μ΄λ‘ μ΄λ€μ§ κ²½μ°μλ μΈλλ° (_)λ‘ κ΅¬λΆν΄μ μ€λ€μ΄ν¬ μΌμ΄μ€λ‘ νννλ κ²μ΄ μΌλ°μ μ΄λ€.( μΌλ°μ μΌλ‘ μλ³μλ μΉ΄λ©μΌμ΄μ€λ‘, const ν€μλλ‘ μ μΈν μλ³μλ λλ¬Έμ + μ€λ€μ΄ν¬ μΌμ΄μ€λ‘, μμ±μ ν¨μλ νμ€μΉΌ μΌμ΄μ€λ‘ νννλκ²μ΄ μΌλ°μ μ΄λ€. )
15.3.4 const ν€μλμ κ°μ²΄
const ν€μλλ‘ μ μΈλ λ³μμ μμ κ°μ ν λΉν κ²½μ° κ°μ λ³κ²½ν μ μμ§λ§, const ν€μλλ‘ μ μΈλ λ³μμ κ°μ²΄λ₯Ό ν λΉν κ²½μ° κ°μ λ³κ²½ν μ μλ€. λ³κ²½ κ°λ₯ν κ°μΈ κ°μ²΄λ μ¬ν λΉ μμ΄λ μ§μ λ³κ²½μ΄ κ°λ₯νκΈ° λλ¬Έμ΄λ€. constν€μλλ μ¬ν λΉμ κΈμ§ν λΏ κ°μ 'λΆλ³'μ μλ―Ένμ§λ μλλ€. κ·Έλ¬λ―λ‘ κ°μ²΄μ νλ‘νΌν° λμ μμ±, μμ , κ°±μ μ ν΅ν΄ κ°μ²΄λ₯Ό λ³κ²½νλ κ²μ κ°λ₯νλ€. μ΄λ κ°μ²΄κ° λ³κ²½λλλΌλ λ³μμ ν λΉλ μ°Έμ‘° κ°μ λ³κ²½λμ§ μλλ€.
const person = {
name : 'lee'
};
person.name = 'kim';
console.log(person.name); // kim
<μ λ΄μ©μ νλμ νλ‘ μ 리>
var ν€μλλ‘ μ μΈλ λ³μ | let ν€μλλ‘ μ μΈλ λ³μ | const ν€μλλ‘ μ μΈλ λ³μ | |
νΈμ΄μ€ν | o | o (TDZμμ) | o (TDZμμ) |
μ μ κ°μ²΄ winodw νλ‘νΌν° | o | x | x |
λ³μμ μ€λ³΅ μ μΈ(λμΌ μ€μ½ν λ΄) | o | x | x |
κ°μ μ¬ν λΉ | o | o | x |
'π Language & CS knowledge > JavaScript (λͺ¨λμλ°μ€ν¬λ¦½νΈ Deep Dive)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
17μ₯ μμ±μ ν¨μμ μν κ°μ²΄ μμ± (0) | 2022.07.10 |
---|---|
16μ₯ νλ‘νΌν° μ΄νΈλ¦¬λ·°νΈ (0) | 2022.07.08 |
14μ₯ μ μ λ³μμ λ¬Έμ μ (0) | 2022.07.04 |
13μ₯ μ€μ½ν (0) | 2022.07.03 |
12μ₯ ν¨μ (0) | 2022.07.02 |