π§‘ JavaScript
[JS] var, let, const μ°¨μ΄
Genie_.
2024. 12. 4. 23:55
728x90
λ°μν
π§‘ JavaScript
1. var, let, constλ?
JavaScriptμμ λ³μλ₯Ό μ μΈνλ λ°©λ²μλ var, let, const μΈ κ°μ§κ° μλ€.
κ°κ°μ νΉμ§κ³Ό λμ λ°©μμ΄ λ€λ₯΄λ―λ‘ μ¬λ°λ₯΄κ² μ¬μ©νλ κ²μ΄ μ€μνλ€.
2. varμ νΉμ§
varλ ES6 μ΄μ λΆν° μ‘΄μ¬νλ λ³μ μ μΈ λ°©μμ΄λ€.
μ£Όμ νΉμ§
- ν¨μ λ 벨 μ€μ½ν(Function Scope): varλ‘ μ μΈλ λ³μλ ν¨μ λ΄λΆμμλ§ μ ν¨νλ€.
- λ³μ νΈμ΄μ€ν (Variable Hoisting): λ³μ μ μΈμ΄ μ½λ μ€ν μ μ λμ΄μ¬λ €μ§μ§λ§, κ°μ ν λΉλμ§ μμ (undefined μν).
- μ€λ³΅ μ μΈ κ°λ₯: κ°μ μ΄λ¦μΌλ‘ μ¬λ¬ λ² μ μΈν΄λ μλ¬κ° λ°μνμ§ μμ.
μμ
console.log(a); // undefined λ°μ
var a = 10;
console.log(a); // 10
if (true) {
var b = 20;
}
console.log(b); // 20 (λΈλ‘μ λ²μ΄λλ μ κ·Ό κ°λ₯)
μ μ½λμμ var λ³μλ λΈλ‘ μ€μ½νκ° μλ ν¨μ μ€μ½νλ₯Ό κ°μ§λ―λ‘ ifλ¬Έ λ°μμλ bλ₯Ό μ κ·Όν μ μλ€.
3. letμ νΉμ§
letμ ES6μμ λμ λ λ³μ μ μΈ λ°©μμΌλ‘, varμ λ¨μ μ 보μνλ€.
μ£Όμ νΉμ§
- λΈλ‘ λ 벨 μ€μ½ν(Block Scope): {} λΈλ‘ λ΄λΆμμλ§ μ ν¨νλ€.
- λ³μ νΈμ΄μ€ν λ°μ: νμ§λ§ TDZ(Temporal Dead Zone)μ μν΄ μ΄κΈ°ν μ μ κ·Ό λΆκ°.
- μ€λ³΅ μ μΈ λΆκ°λ₯: κ°μ μ€μ½ν λ΄μμ κ°μ λ³μ μ΄λ¦μΌλ‘ λ€μ μ μΈνλ©΄ μλ¬ λ°μ.
μμ
let x = 10;
console.log(x); // 10
if (true) {
let y = 20;
console.log(y); // 20
}
// console.log(y); : μλ¬λ°μ
4. constμ νΉμ§
constλ letκ³Ό λλΆλΆ μ μ¬νμ§λ§, κ°μ μ¬ν λΉν μ μλ€λ μ°¨μ΄μ μ΄ μλ€.
μ£Όμ νΉμ§
- λΈλ‘ λ 벨 μ€μ½ν(Block Scope): {} λΈλ‘ λ΄λΆμμλ§ μ ν¨νλ€.
- λ³μ νΈμ΄μ€ν λ°μ: νμ§λ§ TDZμ μν΄ μ΄κΈ°ν μ μ κ·Ό λΆκ°.
- μμ(constant) μ μΈ: μ μΈ ν κ°μ λ³κ²½ν μ μμ.
- κ°μ²΄μ λ°°μ΄μ λ³κ²½ κ°λ₯: λ¨, κ°μ²΄μ μμ±μ΄λ λ°°μ΄ μμ λ³κ²½μ κ°λ₯νλ€.
μμ
const PI = 3.14;
// PI = 3.1415;
const arr = [1, 2, 3];
arr.push(4);
console.log(arr); // [1, 2, 3, 4] (λ°°μ΄ μμ μΆκ° κ°λ₯)
const obj = { name: 'Alice' };
obj.age = 25;
console.log(obj); // { name: 'Alice', age: 25 } (κ°μ²΄ μμ± μΆκ° κ°λ₯)
5. μ΄λ€ κ²½μ°μ μ¬μ©ν΄μΌ ν κΉ?
- λ³νμ§ μλ κ°μ constλ₯Ό μ¬μ©νμ (μ: μμ κ°, κ°μ²΄ μ°Έμ‘° κ³ μ λ±).
- κ°μ΄ λ³ν κ°λ₯μ±μ΄ μλ κ²½μ° letμ μ¬μ©νμ.
- varλ μ¬μ©μ μ§μνμ. letκ³Ό constκ° μ 곡νλ λΈλ‘ μ€μ½νμ TDZλ‘ μΈν΄ μ½λμ μμ μ±μ΄ λμμ§λ€
728x90
λ°μν