
console.log(a); // undefined (ํธ์ด์คํ
)
var a = 5;
console.log(a); // 5
function test() {
if (true) {
var x = 10;
}
console.log(x); // 10 (if๋ฌธ ๋ธ๋ก ๋ฌด์ํ๊ณ ์ ๊ทผ ๊ฐ๋ฅ)
}
test();
ES6(2015)๋ถํฐ ๋ฑ์ฅ
์ค๋ณต ์ ์ธ ๋ถ๊ฐ
ํธ์ด์คํ ์ ๋ฐ์ํ์ง๋ง ์ด๊ธฐํ ์ ์ ์ ๊ทผํ๋ฉด ์๋ฌ (Temporal Dead Zone)
๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ค. ({} ์์์๋ง ์ ํจ)
let b = 10;
b = 20; // ๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
function testLet() {
if (true) {
let y = 30;
console.log(y); // 30
}
console.log(y); // ReferenceError (๋ธ๋ก ์ค์ฝํ)
}
testLet();
ES6๋ถํฐ ๋ฑ์ฅ
๊ฐ ์ฌํ ๋น ๋ถ๊ฐ (์ด๊ธฐํ ์ดํ ๊ฐ ๋ณ๊ฒฝ ๊ธ์ง)
ํธ์ด์คํ ์ ๋ฐ์ํ์ง๋ง ์ ๊ทผ ์ ์๋ฌ
๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ค.
const c = 100;
c = 200; // TypeError: Assignment to constant variable.
const arr = [1, 2, 3];
arr.push(4); // ๊ฐ๋ฅ (์ฐธ์กฐ ์ฃผ์๋ ๊ทธ๋๋ก, ๋ด๋ถ ๋ฐ์ดํฐ ๋ณ๊ฒฝ)
const obj = { name: 'John' };
obj.name = 'Jane'; // ๊ฐ๋ฅ
| ํน์ง | var | let | const |
|---|---|---|---|
| ์ ์ธ ์์ | ๋์ด์ฌ๋ฆผ(hoisting) | ๋์ด์ฌ๋ฆผ, TDZ ๋ฐ์ | ๋์ด์ฌ๋ฆผ, TDZ ๋ฐ์ |
| ์ค์ฝํ | ํจ์ ์ค์ฝํ | ๋ธ๋ก ์ค์ฝํ | ๋ธ๋ก ์ค์ฝํ |
| ์ฌ์ ์ธ | ๊ฐ๋ฅ | ๋ถ๊ฐ | ๋ถ๊ฐ |
| ์ฌํ ๋น | ๊ฐ๋ฅ | ๊ฐ๋ฅ | ๋ถ๊ฐ (๋จ, ๊ฐ์ฒด/๋ฐฐ์ด ๋ด๋ถ ๋ณ๊ฒฝ์ ๊ฐ๋ฅ) |
var๋ ์ด์ ์ฌ์ฉ ์ง์!
๋ณํ ์ ์๋ ๊ฐ์ด๋ฉด let
๋ณํ์ง ์๋ ๊ฐ์ด๋ฉด const๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ธฐ๋ณธ.