The Difference Between Function and Block Scope in JavaScript - Lee-hyuna/33-js-concepts-kr GitHub Wiki
์ต๊ทผ ์ด๋ค ์ฌ๋์ด Javscript ์ ๊ธฐ๋ณธ ๊ณผ์ ์ผ๋ก ๋์๊ฐ๊ณ ์ถ๋ค๊ณ ํ์ ๋, Wes Bos ์ "ES6 for Everyon" ๊ณผ์ ์ ์ถ์ฒํ๋ค. Wes ๋ ๋ฐ์ด๋ ์ ์๋์ด๋ฉฐ ๋ณต์กํ ์ฃผ์ ์ ๋ํด์ ์ ํ์ด ์ค๋ช ํ ์ ์๋ ์ปค๋ฎค๋์ผ์ดํฐ์ด๋ค.
Wes ์ ๊ณผ์ ์ ํตํ์ฌ ๊ธฐ์ด๋ฅผ ๋ค์ก๊ณ , Javascript ๋ฅผ ํํํ๊ธฐ ์์ํ๋ค.
var, let ๊ณผ const ์ ์ฐจ์ด์
JS ์์ ๋ณ์๋ฅผ ์ ์ธํ๋ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ:
var width = 100;
let height = 200;
const key = 'abc123';
var
var ๋ ์ฌํ ๋น๋๊ณ ์ ๋ฐ์ดํธ ๋ ์ ์์ต๋๋ค.
// Define the variable:
var width = 100;
// Call the variable:
width;
// It returns:
100
// Reassign the variable and call it again:
width = 200;
width;
// Returns:
200
var ๋ณ์๋ ํจ์ ์ค์ฝํ์ ๋๋ค. ์ด๊ฒ์ ๋ฌด์์ ์๋ฏธํ๋? ์์ฑ๋ ํจ์ ๋ด์์๋ง ์ฌ์ฉ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ํจ์ ๋ด๋ถ์์ ์์ฑ๋์ง ์์๋ค๋ฉด ์ ์ญ ๋ฒ์๋ก ์ง์ ๋๋ค.
ํจ์ ๋ด๋ถ์ var ๊ฐ ์ ์๋์ด ์๊ณ ํจ์ ์ธ๋ถ์์ ํธ์ถํ๋ ค๊ณ ํ๋ฉด ๋์ํ์ง ์๋๋ค.
function setWidth(){
var width = 100;
console.log(width);
}
width;
// Returns:
Uncaught ReferenceError: width is not defined
var ๋ ํจ์ ๋ด์์ ์ ์ ๋๊ธฐ ๋๋ฌธ์ ํจ์์ ๋ฐ์์๋ ์ฌ์ฉ์ด ๋ถ๊ฐ๋ฅ ํ ๊ฒ ์ด๋ค.
์ค์ฝํ๋ฅผ ์ดํดํ๋ค
Example:
var age = 100;
if (age > 12){
var dogYears = age * 7;
console.log(`You are ${dogYears} dog years old!`);
}
์์ ์์ ์์ console ์ ์ถ๋ ฅ๊ฒฐ๊ณผ
100
You are 700 dog years old!
๋ง์ฝ dogYears
๋ฅผ ๋ถ๋ฅธ๋ค๋ฉด
dogYears;
// returns:
700
var ๋ณ์๋ ํจ์ ์ค์ฝํ์ ๋ฒ์์ด๋ฏ๋ก var dogYears
์ ์์ ์ ํจ์ ์์์ ์ ์ ๋์ด ์์ง ์์๊ธฐ ๋๋ฌธ์ - var๊ฐ 'window'๋๋ ์ ์ญ ๋ฒ์์์ ๋์ ์ ์๋๋ค
์ฆ, var๋ ์ค๊ดํธ์ ๊ตญํ๋์ง ์๋๋ค
let, const ์ ์ด์
let ๊ณผ const ๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ค ์ด์ ์ด ์์๊น ? ์ค์ฝํ๊ฐ ํจ์ ๋จ์๊ฐ ์๋๋ผ ๋ธ๋ก ๋จ์๋ก ๋ฐ๋๊ฒ ๋ฉ๋๋ค.
๋ธ๋ก์ด๋ ๋ฌด์์ผ๊น ? {} ์ค๊ดํธ๋ฅผ ๋ธ๋ญ์ด๋ผ๊ณ ํ๋ค.
์์ ์์ ์์ var ๋ฅผ const ๋ก ๋ณ๊ฒฝํ ํ dogYears ๋ฅผ ํธ์ถํ๋ฉด Uncaught ReferenceError ์๋ฌ๋ฅผ ๋ฐํํฉ๋๋ค.
var age = 100;
if (age > 12){
let dogYears = age * 7;
console.log(`You are ${dogYears} dog years old!`);
}
let ๋์ const ๋ฅผ ์ด์ฉํ ์ ์์ต๋๋ค.
- var ๋ ํจ์ ์ค์ฝํ์ด๋ค
- let, const ๋ ๋ธ๋ก ์ค์ฝํ์ด๋ค
- ํจ์ ์ค์ฝํ๋ ํจ์ ์์ด๋ค
- ๋ธ๋ก ์ค์ฝํ๋ ์ค๊ดํธ์ด๋ค