π λͺ¨λ μλ°μ€ν¬λ¦½νΈ κ΅μ¬) 15μ₯. let, const ν€μλμ λΈλ‘ λ 벨 μ€μ½ν
β» λ³μ μ μΈ / ν λΉ / μ΄κΈ°ν
λ³μ μ μΈ : λ³μλ₯Ό μ μνλ κ²
var foo;
λ³μ ν λΉ : λ³μκ° μ μΈλ ν λμ μ°μ°μ(=)λ₯Ό ν΅ν΄ κ°μ λ£μ΄μ£Όλ κ²
var foo;
foo = 1;
λ³μ μ΄κΈ°ν : λ³μλ₯Ό μ μΈν¨κ³Ό λμμ κ°μ λ£μ΄μ£Όλ κ²
var foo = 1;
β» const vs. let vs. var
κ°λ¨ν μ 리νμλ©΄ λ€μκ³Ό κ°λ€.
1. const
const a = b;
const a = c;
// μ¬μ μΈ κΈμ§
const a = b;
a = c;
// μ¬ν λΉ κΈμ§
2. let
let a = b;
let a = c;
// μ¬μ μΈ κΈμ§
let a = b;
a = c;
// μ¬ν λΉμ κ°λ₯
3. var
var a = b;
var a = c;
a = c;
// μ¬μ μΈ, μ¬ν λΉ κ°λ₯
01. var ν€μλλ‘ μ μΈν λ³μμ λ¬Έμ μ
1) λ³μ μ€λ³΅ μ μΈ νμ©
var ν€μλλ‘ μ μΈν λ³μλ μ€λ³΅ μ μΈμ΄ κ°λ₯νλ€.
λ°λΌμ λ³μλ₯Ό μ€λ³΅ μ μΈνκ³ κ°κΉμ§ ν λΉνλ€λ©΄, μλμΉ μκ² λ¨Όμ μ μΈλ λ³μ κ°μ΄ λ³κ²½λλ λΆμμ©μ΄ λ°μν μ μλ€.
2) ν¨μ λ 벨 μ€μ½ν
var ν€μλλ‘ μ μΈν λ³μλ μ€λ‘μ§ ν¨μμ μ½λ λΈλ‘λ§μ μ§μ μ€μ½νλ‘ μΈμ νλ€.
β‘οΈ ν¨μ μΈλΆμμ var ν€μλλ‘ μ μΈν λ³μλ μ½λ λΈλ‘ λ΄μμ μ μΈν΄λ λͺ¨λ μ μ λ³μκ° λλ€.
π₯οΈ μμ μ½λ
var x = 1;
if (true) {
// xλ μ μ λ³μλ€. μ΄λ―Έ μ μΈλ μ μ λ³μ xκ° μμΌλ―λ‘ x λ³μλ μ€λ³΅ μ μΈλλ€.
// μ΄λ μλμΉ μκ² λ³μκ°μ΄ λ³κ²½λλ λΆμμ©μ λ°μμν¨λ€.
var x = 10;
}
console.log(x); // 10
3) λ³μ νΈμ΄μ€ν
λ³μ νΈμ΄μ€ν μ μν΄ λ³μ μ μΈλ¬Έμ΄ μ€μ½νμ μ λλ‘ λμ΄ μ¬λ €μ§ κ²μ²λΌ λμνλ€.
var ν€μλλ‘ μ μΈν λ³μλ λ³μ μ μΈλ¬Έ μ΄μ μ μ°Έμ‘°ν μ μλ€. (ν λΉλ¬Έ μ΄μ μ λ³μλ₯Ό μ°Έμ‘°νλ©΄ undefinedλ₯Ό λ°ννλ€.)
02. let ν€μλ
1) λ³μ μ€λ³΅ μ μΈ κΈμ§
let ν€μλλ‘ μ΄λ¦μ΄ κ°μ λ³μλ₯Ό μ€λ³΅ μ μΈνλ©΄ λ¬Έλ² μλ¬(SystaxError)κ° λ°μνλ€.
π₯οΈ μμ μ½λ
var foo = 123;
// var ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νλ€.
var foo = 456;
let bar = 123;
// letμ΄λ const ν€μλλ‘ μ μΈλ λ³μλ κ°μ μ€μ½ν λ΄μμ μ€λ³΅ μ μΈμ νμ©νμ§ μλλ€.
let bar = 456; // SyntaxError
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
3) λ³μ νΈμ΄μ€ν
let ν€μλλ‘ μ μΈν λ³μλ λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
(* λͺ¨λ μ μΈ(var, let, const, function, function*, class λ±)μ νΈμ΄μ€ν νμ§λ§, let, const, classλ₯Ό μ¬μ©ν μ μΈλ¬Έμ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.)
π₯οΈ μμ μ½λ
console.log(foo); // ReferenceError
let foo;
β‘οΈ let ν€μλλ‘ μ μΈν λ³μλ "μ μΈ λ¨κ³"μ "μ΄κΈ°ν λ¨κ³"κ° λΆλ¦¬λμ΄ μ§νλλ€.
β‘οΈ "μ μΈ λ¨κ³" - λ°νμ μ΄μ μλ°μ€ν¬λ¦½νΈ μμ§ λ¨Όμ μ€ν
β‘οΈ "μ΄κΈ°ν λ¨κ³" - λ³μ μ μΈλ¬Έμ λλ¬νμ λ μ€ν
4) μ μ κ°μ²΄μ let
var ν€μλλ‘ μ μΈν μ μ° λ³μμ μ μ ν¨μ, μ μΈνμ§ μμ λ³μμ κ°μ ν λΉν μ묡μ μ μμ μ μ κ°μ²΄ windowμ νλ‘νΌν°κ° λλ€.
let ν€μλλ‘ μ μΈν λ³μλ μ μ κ°μ²΄μ νλ‘νΌν°κ° μλλ€.
03. const ν€μλ
1) μ μΈκ³Ό μ΄κΈ°ν
const ν€μλλ‘ μ μΈν λ³μλ λ°λμ μ μΈκ³Ό λμμ μ΄κΈ°νν΄μΌ νλ€.
π₯οΈ μμ μ½λ
const foo; // SyntaxError
const foo = 1;
const ν€μλλ‘ μ μΈν λ³μλ let ν€μλλ‘ μ μΈν λ³μμ λ§μ°¬κ°μ§λ‘,
β‘οΈ λΈλ‘ λ 벨 μ€μ½νλ₯Ό κ°μ§λ€.
β‘οΈ λ³μ νΈμ΄μ€ν μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
π₯οΈ μμ μ½λ
{
// λ³μ νΈμ΄μ€ν
μ΄ λ°μνμ§ μλ κ²μ²λΌ λμνλ€.
console.log(foo); // ReferenceError
const foo = 1;
console.log(foo); // 1
}
// λΈλ‘ λ 벨 μ€μ½νλ₯Ό κ°λλ€.
console.log(foo); // ReferenceEeror
2) μ¬ν λΉ κΈμ§
- var / let ν€μλλ‘ μ μΈν λ³μ : μ¬ν λΉ μμ λ‘μ (*let ν€μλλ‘ μ μΈν λ³μ : λ³μ μ€λ³΅ μ μΈμ κΈμ§)
- const ν€μλλ‘ μ μΈν λ³μ : μ¬ν λΉ κΈμ§
const foo = 1;
foo = 2; // TypeError
3) μμ
μμλ μ¬ν λΉμ΄ κΈμ§λ λ³μμ΄λ€.
λ³μ : μΈμ λ μ§ μ¬ν λΉμ ν΅ν΄ λ³μ κ° λ³κ²½ κ°λ₯
μμ : μ¬ν λΉ κΈμ§
μΌλ°μ μΌλ‘ μμμ μ΄λ¦μ λλ¬Έμλ‘ μ μΈνμ¬ μμμμ λͺ νν λνλΈλ€.
4) const ν€μλμ κ°μ²΄
- const ν€μλλ‘ μ μΈλ λ³μμ μμ κ° ν λΉ) κ° λ³κ²½ X
- const ν€μλλ‘ μ μΈλ λ³μμ κ°μ²΄ ν λΉ) κ° λ³κ²½ O
04. var vs. let vs. const
- ES6μ μ¬μ©νλ€λ©΄, var ν€μλλ μ¬μ©X
- μ¬ν λΉμ΄ νμν κ²½μ°, λ³μμ μ€μ½νλ μ΅λν μ’κ²νμ¬) let ν€μλ μ¬μ©
- κΈ°λ³Έμ μΌλ‘, μΌλ¨ const μ¬μ©νλ κ²μ΄ μμ !
π μ°Έκ³ μλ£
[무λ£] λͺ¨λ μλ°μ€ν¬λ¦½νΈ λ₯λ€μ΄λΈ μ€ν°λ - μΈνλ° | κ°μ
γλͺ¨λ μλ°μ€ν¬λ¦½νΈ λ₯λ€μ΄λΈγ μ± λ΄μ©μ κ·Έλλ‘ λ°λΌκ°λ μ€ν°λ μμμ λλ€. ν¨κ» 곡λΆνλ©΄ ν¨μ¬ μ¬μμ§ κ±°μμ!, - κ°μ μκ° | μΈνλ°
www.inflearn.com