var, let, const
var, let, const
์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ var, let, const
์ ์ฐจ์ด๋ฅผ ์์๋ณด์.
var
var๋ const์ ๋ค๋ฅด๊ฒ ๊ฐ์ด ๋ณํ ์ ์๋ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉ๋๋ค.
const์์ ์ฐจ์ด๋ ๋ณ์์ด๋ ์์์ด๋์ธ๋ฐ let ๊ณผ์ ์ฐจ์ด๋ ๋ฌด์์ผ๊น?
var๋ function scope์ด๊ณ , let๊ณผ const๋ block scope์ด๋ค.
if(true){
var num = 100;
}
console.log(num); // 100 ์ถ๋ ฅ
num += 200;
console.log(num); // 300 ์ถ๋ ฅ
์์ ์์ ๋ฅผ ํ์ธํด๋ณด์.
๋ธ๋ก ์์ num์ด ์ ์ธ๋๊ณ ๋ธ๋ก์ด ๋๋ฌ๊ธฐ ๋๋ฌธ์ num์ด ์๋ฉธ๋ ๊ฒ ๊ฐ์ง๋ง var๋ function scope์ด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
function testFunc(){
var num = 100;
console.log("testFunction");
return;
}
testFunc();
console.log(num);
์์ ์์ ๊ฐ function scope๋ฅผ ๋ฒ์ด๋์ num์ ํธ์ถํ๋ฏ๋ก num is not defined
๋ฉ์์ง๊ฐ ๋์จ๋ค.
let
if(true){
let num = 100;
}
console.log(num); // ์ค๋ฅ
let์ block scope์ด๋ฏ๋ก ๋ธ๋ก์ ๋ฒ์ด๋๋ฉด ์ถ๋ ฅ๋์ง ์๊ณ ์ค๋ฅ๊ฐ ๋๋ค.
let num = 100;
console.log(num); // 100 ์ถ๋ ฅ
num = 200;
console.log(num); // 200 ์ถ๋ ฅ
๋ธ๋ก ๋ฒ์์๋ง ์๋ค๋ฉด let์ ๋ณ์ ์ ์ธ์ ์ฌ์ฉ๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์ผ๋ง๋ ๋ฐ๋ ์ ์๋ค.
var๋ block์ ๋ฒ์ด๋๋ ์ฌ์ฉ๋๋ฏ๋ก ์ฌ๋ฌ ํผ๋์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ ์ง์ํ๊ณ let์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
const
const ๋ํ block scope์ด๋ฏ๋ก block์ด ๋๋๋ฉด ์๋ฉธ๋๋ค.
if(true){
const num = 100;
}
console.log(num); // ์ค๋ฅ
๋ const๋ ์์๋ฅผ ์ ์ธํ ๋ ์ฌ์ฉํ๋ฏ๋ก, ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ์ค๋ฅ๋ฅผ ์ถ๋ ฅํ๋ค.
const num = 100;
console.log(num); // 100 ์ถ๋ ฅ
num = 200;
console.log(num); // ์ค๋ฅ
TypeError: Assignment to constant variable.
์ค๋ฅ๊ฐ ์ถ๋ ฅ๋๋ค.