Skip to content

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: ๋ธ”๋ก ์Šค์ฝ”ํ”„ โ†’ ์„ ์–ธ๋œ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ๋งŒ ์œ ํšจ.
  • ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋Š” ํ˜ธ์ด์ŠคํŒ…์œผ๋กœ ์ธํ•ด ๋ณ€์ˆ˜์˜ ์„ ์–ธ ์œ„์น˜์™€ ์‹ค์ œ ๋™์ž‘์ด ์–ด๊ธ‹๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.