02. References (์ฐธ์กฐ) โ
๋ณ์ ์ ์ธ์ ์ฝ๋์ ์์ ์ฑ๊ณผ ๊ฐ๋ ์ฑ์ ์ถ๋ฐ์ ์ด๋ค. ๋ฌด์์ด ๋ณํ ์ ์๊ณ , ๋ฌด์์ด ๋ณํ์ง ์์์ผ ํ๋ ์ง ๋ช ํํ๊ฒ ํด์ผํ๋ค.
๐งฉ Note
var/let/const๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ ํ์
์ ์์ ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ์ฝ์
์ด๋ค.
var
: ํธ์ด์คํ ๊ณผ ํจ์ ์ค์ฝํ๋ก ์ธํด ์์ธก์ด ์ด๋ ต๋ค.const
: ๋ถ๋ณ์ฑ ์ฌ๊ณ ๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ์ ๋ํ๋ค.let
: ๋ณํ์ ์๋๋ฅผ ๋ช ์์ ์ผ๋ก ๋๋ฌ๋ธ๋ค.
1. ๋ชจ๋ ์ฐธ์กฐ์๋ var
๋์ const
๋ฅผ ์ฌ์ฉ. โ
eslint: prefer-const, no-const-assign
js
// bad
var a = 1;
var b = 2;
// good
const a = 1;
const b = 2;
- ์? ์ฐธ์กฐ๋ฅผ ์ฌํ ๋นํ์ง ๋ชปํ๊ฒ ํจ์ผ๋ก์จ, ์๋์น ์์ ๋ณ๊ฒฝ์ด๋ ๋ฒ๊ทธ๋ฅผ ์๋ฐฉํ๋ค.
์ฆ, ์ฝ๊ธฐ ์ ์ฉ ๋ณ์๋ฅผ ๋ช ํํ ๊ตฌ๋ถํ ์ ์๋ค.
2. ์ฌํ ๋น์ด ํ์ํ ๊ฒฝ์ฐ์๋ง var
๋์ let
์ ์ฌ์ฉ. โ
eslint: no-var
js
// bad
var count = 1;
if (true) {
count += 1;
}
// good
let count = 1;
if (true) {
count += 1;
}
- ์?
let
์ ๋ธ๋ก ์ค์ฝํ๋ฅผ ๊ฐ์ง๋ฏ๋ก,var
์ฒ๋ผ ํจ์ ์ ์ฒด๋ก ๋ฒ์๊ฐ ํผ์ ธ๋ฒ๋ฆฌ๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ค.
3. let
๊ณผ const
๋ ๋ ๋ค ๋ธ๋ก ์ค์ฝํ โ
js
// const์ let์ ์ ์ธ๋ ๋ธ๋ก ์์์๋ง ์กด์ฌํ๋ค.
{
let a = 1;
const b = 1;
}
console.log(a); // ReferenceError
console.log(b); // ReferenceError
cosnt
,let
์ ์ ์ธ๋ ๋ธ๋ก ์์์๋ง ์กด์ฌํ๋ค.- ๋ธ๋ก์ด ๋๋๋ฉด ๋ณ์๋ ์ฌ๋ผ์ง๋ค.
- ์ด๋ก์ธํด ์ฝ๋๊ฐ ์์ธก ๊ฐ๋ฅํด์ง๊ณ , ๋ฒ๊ทธ ์ถ์ ์ด ์ฌ์์ง๋ค.
๐งฉ Block Scope vs Function Scope
var
: ํจ์ ์ค์ฝํ โ{}
๋ธ๋ก์ ๋ฌด์.let
,const
: ๋ธ๋ก ์ค์ฝํ โ ์ ์ธ๋ ๋ธ๋ก ๋ด๋ถ์์๋ง ์ ํจ.- ํจ์ ์ค์ฝํ๋ ํธ์ด์คํ ์ผ๋ก ์ธํด ๋ณ์์ ์ ์ธ ์์น์ ์ค์ ๋์์ด ์ด๊ธ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.