Skip to content

Latest commit

ย 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 

Repository files navigation

ํ•™์Šตํ‚ค์›Œ๋“œ ์ •๋ฆฌ

1. ๋ชฉํ‘œ

  • ์•„๋ž˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋Œ€๋‹ต ์ •๋ฆฌํ•˜๊ธฐ
  • ๊ฐ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋А๋‚€ ์ ๋„ ํฌํ•จํ•˜๊ธฐ
    • ์–ด๋””์— ์“ธ ์ˆ˜ ์žˆ์„์ง€
    • ์–ด๋–ค ํŠน์ง•์ด ์ด๋Ÿฌ์ด๋Ÿฌํ•œ ๊ฒƒ ๊ฐ™๋‹ค ๋“ฑ

2. ์งˆ๋ฌธ ๋ฆฌ์ŠคํŠธ

1. ๋น„ํŠธ ์—ฐ์‚ฐ์ž ๋ณด์ˆ˜ ์ดํ•ดํ•˜๊ธฐ

1.1. ๋น„ํŠธ์™€ ๋น„ํŠธ ์—ฐ์‚ฐ์ž

  • bit๋ž€ binary digit๋กœ ์ปดํ“จํ„ฐ์—์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„์ด๋‹ค. 0๊ณผ 1์„ ์‚ฌ์šฉํ•˜์—ฌ 2์ง„๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
  • ๋น„ํŠธ ์—ฐ์‚ฐ์ž๋Š” Bitwise operators๋ผ๊ณ  ํ•˜๋ฉฐ ๋น„ํŠธ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์ง€์นญํ•œ๋‹ค.
  • ๋ถ€ํ˜ธ๊ฐ€ ์žˆ๋Š” ์ •์ˆ˜๋Š” ๊ฐ€์žฅ ์™ผ์ชฝ ์ฒซ ๋ฒˆ์งธ์— ์žˆ๋Š” ์ตœ์ƒ์œ„ ๋น„ํŠธ๋กœ ์Œ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•œ๋‹ค. 0์€ ์–‘์ˆ˜, 1์€ ์Œ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋ถ€ํ˜ธ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋น„ํŠธ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ๋น„ํŠธ๋กœ ์ •์ˆ˜์˜ ๊ฐ’์„ ํ‘œํ˜„ํ•œ๋‹ค.

1.2. 2์ง„๋ฒ•์˜ ์Œ์ˆ˜ ํ‘œํ˜„ - 2์˜ ๋ณด์ˆ˜

  • ๊ตฌํ•˜๋ ค๋Š” ์Œ์ˆ˜์˜ ์ ˆ๋Œ€๊ฐ’์˜ 2์ง„ ํ‘œํ˜„์„ ๊ตฌํ•œ ํ›„ ์ด ์ˆซ์ž์— ๋Œ€ํ•ด 1์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. 1์˜ ๋ณด์ˆ˜๋Š” 1์€ 0์œผ๋กœ, 0์€ 1๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค.
  • ์œ„์˜ ๊ฒฐ๊ณผ์— 1์„ ๋”ํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด 6๋น„ํŠธ๋กœ -18์„ ํ‘œํ˜„ํ•ด๋ณด์ž.
    • -18์˜ 2์ง„ ํ‘œํ˜„์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ ˆ๋Œ€๊ฐ’ 18์˜ 2์ง„ ํ‘œํ˜„์ธ 010010์˜ 1์˜ ๋ณด์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค.
    • 010010์˜ 1์˜ ๋ณด์ˆ˜๋Š” 101101์ด๋‹ค.
    • 101101์— 1์„ ๋”ํ•œ 101110์ด -18์˜ 6๋น„ํŠธ ์ •์ˆ˜ ํ‘œํ˜„์ด๋‹ค.

1.3. ๋น„ํŠธ์—ฐ์‚ฐ์ž

1.3.1. ๋น„ํŠธ NOT
  • ~a์™€ ๊ฐ™์ด ํ‹ธ๋ฐ(~)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ํ”ผ์—ฐ์‚ฐ์ž์˜ 1์˜ ๋ณด์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ฆ‰, ๋น„ํŠธ๋ฅผ ๋’ค์ง‘๋Š”๋‹ค.
  • ~010010 => 101101
1.3.2. ๋น„ํŠธ AND
  • a & b ์ฒ˜๋Ÿผ ์•ฐํผ์ƒŒ๋“œ(&)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ทจํ•œ๋‹ค.
  • ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ๋ชจ๋‘ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์•„๋‹ˆ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • 1010 & 1001 => 1000
1.3.3. ๋น„ํŠธ OR
  • a | b ์™€ ๊ฐ™์ด ํŒŒ์ดํ”„(|)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ทจํ•œ๋‹ค.
  • ๋‘ ์—ฐ์‚ฐ์ž์˜ ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ ์ค‘ ํ•˜๋‚˜๋ผ๋„ 1์ด๋ฉด 1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ , ์•„๋‹ˆ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • 1010 | 1001 => 1011
1.3.4. ๋น„ํŠธ XOR
  • a ^ b ์™€ ๊ฐ™์ด ์บ๋Ÿฟ(^)์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ทจํ•œ๋‹ค.
  • ๋‘ ์—ฐ์‚ฐ์ž์˜ ๋Œ€์‘๋˜๋Š” ๋น„ํŠธ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅผ ๋•Œ 1์„ ๋ฐ˜ํ™˜, ๊ทธ ์™ธ์—๋Š” 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • 1010 ^ 1001 => 0011
1.3.5. ์™ผ์ชฝ ์‹œํ”„ํŠธ
  • a << b ์™€ ๊ฐ™์ด <<๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ทจํ•œ๋‹ค.
  • ์ขŒํ•ญ์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ์šฐํ•ญ์˜ ์ˆซ์ž๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์›€์ง์ด๊ณ , ์˜ค๋ฅธ์ชฝ์€ 0์œผ๋กœ ์ฑ„์šด๋‹ค. ๋ถ€ํ˜ธ๋Š” ์œ ์ง€ํ•œ๋‹ค.
  • 1010 << 2 => 101000
1.3.6. ๋ถ€ํ˜ธ ์žˆ๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ
  • a >> b ์™€ ๊ฐ™์ด >>๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ทจํ•œ๋‹ค.
  • ์ขŒํ•ญ์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ์šฐํ•ญ์˜ ์ˆซ์ž๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›€์ง์ด๊ณ , ๋ถ€ํ˜ธ๋Š” ์œ ์ง€ํ•œ๋‹ค. ์™ผ์ชฝ์€ ๋ถ€ํ˜ธ ๋น„ํŠธ๋กœ ์ฑ„์šฐ๊ณ  ์˜ค๋ฅธ์ชฝ ๋‚จ๋Š” ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฐ๋‹ค.
  • 11010 >> 2 => 11110
1.3.7. ๋ถ€ํ˜ธ ์—†๋Š” ์˜ค๋ฅธ์ชฝ ์‹œํ”„ํŠธ
  • a >>> b ์™€ ๊ฐ™์ด >>>๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ทจํ•œ๋‹ค.
  • ์ขŒํ•ญ์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ์šฐํ•ญ์˜ ์ˆซ์ž๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์›€์ง์ด๊ณ , ์™ผ์ชฝ์€ 0์œผ๋กœ ์ฑ„์šด๋‹ค. ์˜ค๋ฅธ์ชฝ ๋‚จ๋Š” ๋น„ํŠธ๋Š” ๋ฒ„๋ฆฐ๋‹ค.
  • 11010 >>> 2 => 00110

1.4. ๋А๋‚€ ์ 

  • ์–ด๋””์— ์–ด๋–ค ์šฉ๋„๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์—์„œ ์ด๋ฃจ์–ด์ง€๋Š” ์ •์ˆ˜ ์—ฐ์‚ฐ ๋ฐฉ๋ฒ•์„ ์ดํ•ดํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

2. 10์„ 2์ง„ ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์–ด๋–ค ์ˆœ์„œ๋กœ ๊ณ„์‚ฐํ•ด์•ผ ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜๊ธฐ

2.1. ์„ค๋ช…

  1. 10์„ 2๋กœ ๋‚˜๋ˆ  ๋ชซ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•œ๋‹ค.
  2. 1์—์„œ ๊ตฌํ•œ ๋‚˜๋จธ์ง€๋ฅผ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— unshift ํ•œ๋‹ค.
  3. 1์—์„œ ๊ตฌํ•œ ๋ชซ์œผ๋กœ 1, 2๋ฒˆ์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
  4. ๋ชซ์ด 2๋ณด๋‹ค ์ž‘์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.
  5. 2๋ณด๋‹ค ์ž‘์•„์ง„ ๋งˆ์ง€๋ง‰ ๋ชซ์˜ ๊ฐ’์„ ๊ฒฐ๊ณผ ๋ฐฐ์—ด์— ๋งˆ์ง€๋ง‰์œผ๋กœ unshift ํ•œ๋‹ค.
  6. ๊ฒฐ๊ณผ ๋ฐฐ์—ด์„ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

2.2. ๋А๋‚€ ์ 

10์ง„ ํ‘œํ˜„์„ 2์ง„ ํ‘œํ˜„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ๊ฒŒ ๋๊ณ  ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋กœ ๋‚˜์˜ค๋ฉด ๊ธˆ๋ฐฉ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.


3. hoisting ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•˜๊ธฐ

3.1. ํ˜ธ์ด์ŠคํŒ…์ด๋ž€?

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ hoisting์ด๋ž€ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ์„ ์–ธ์ด ๊ทธ๋“ค์ด ํฌํ•จ๋œ scope์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
  • scope๋Š” ์ „์—ญ(global) ๋˜๋Š” ์ง€์—ญ(local) ๋ฒ”์œ„๊ฐ€ ์žˆ์œผ๋ฉฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ local์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ๋ฒ”์œ„๋ฅผ ๋งํ•œ๋‹ค.

3.2. ๋ณ€์ˆ˜์˜ ํ˜ธ์ด์ŠคํŒ…

  • ๋ณ€์ˆ˜๋Š” ์‹๋ณ„์ž์˜ ์„ ์–ธ๋งŒ ํ˜ธ์ด์ŠคํŒ…๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’ ํ• ๋‹น ๊ตฌ๋ฌธ ์ด์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ undefined ๊ฐ’์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  • let ๋˜๋Š” const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ ๋˜ํ•œ ํ˜ธ์ด์ŠคํŒ… ๋˜๋‚˜, var์™€๋Š” ๋‹ค๋ฅด๊ฒŒ ๊ฐ’ ์„ ์–ธ ๊ตฌ๋ฌธ ์ด์ „์— ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด ReferenceError๋ฅผ, ์„ ์–ธ ํ›„ ํ• ๋‹น ์ „์— ์ ‘๊ทผํ•˜๊ฒŒ ๋˜๋ฉด undefined ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

3.3. ํ•จ์ˆ˜์˜ ํ˜ธ์ด์ŠคํŒ…

  • ํ•จ์ˆ˜ ์„ ์–ธ์‹์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ํ˜ธ์ด์ŠคํŒ…๋˜๋ฉฐ, ํ•จ์ˆ˜ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋ ค๋Š” ๋ณ€์ˆ˜์˜ ์‹๋ณ„์ž๋งŒ ํ˜ธ์ด์ŠคํŒ… ๋œ๋‹ค.
  • ์œ„์™€ ๊ฐ™์€ ์ด์œ ๋กœ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ์„ ์–ธ๋œ ํ•จ์ˆ˜(ํŠนํžˆ var)๋ฅผ ํ•จ์ˆ˜ ํ• ๋‹น ์ด์ „์— ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” TypeError๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

3.4. ๊ฒฐ๋ก 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ด์ŠคํŒ… ๋˜๋Š” ํŠน์ง•์€ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ์–ด๋””์„œ ์„ ์–ธ๋˜๋“  ์ƒ๊ด€์—†์ด ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ๋„ ์žˆ์ง€๋งŒ, ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ํ•˜๊ณ  ์ž ์žฌ์  ์˜ค๋ฅ˜์˜ ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ธ๋‹ค๋Š” ๋‹จ์ ๋„ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ํฌํ•จํ•œ ๋ณ€์ˆ˜๋Š” ์ตœ๋Œ€ํ•œ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ํ›„์— ์ ‘๊ทผ ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

3.5. ๋А๋‚€ ์ 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹์„ ์–ด๋А ์ •๋„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ  ์™œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ, ์ดˆ๊ธฐํ™” ํ•œ ํ›„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€, ํ•จ์ˆ˜ ์„ ์–ธ์‹๊ณผ ํ‘œํ˜„์‹์˜ ์ฐจ์ด๊ฐ€ ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด์„œ๋„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ž ์žฌ์  ์˜ค๋ฅ˜๋ฅผ ์ข€ ๋” ์‰ฝ๊ฒŒ ์žก์•„๋‚ผ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.


4. !! ์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”๊ฐ€? ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

4.1. ์„ค๋ช…

  • !!(double exclamation)์€ ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž NOT(!)์„ ๋‘ ๋ฒˆ ์“ด ๊ฒƒ์œผ๋กœ, boolean type์ด ์•„๋‹Œ ๊ฐ’์„ boolean type์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.
  • Boolean data type์ด๋ž€ true ๋˜๋Š” false์˜ ๋‘ ๊ฐ€์ง€ ๊ฐ’๋งŒ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋‹ค.
  • ์–ด๋–ค ๊ฐ’์— ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž NOT์„ ์ ์šฉํ•˜๋ฉด ๊ทธ ๊ฐ’์˜ ๋ฐ˜๋Œ€๋˜๋Š” boolean ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ, !๋ฅผ ๋‘ ๋ฒˆ ์ ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ํ•œ ๋ฒˆ ๋” NOT์ด ๋˜๋ฏ€๋กœ ์›๋ž˜ ๊ฐ’์˜ boolean ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
    • !5 === false
    • !!5 === true
  • ์ฆ‰, !!value๋Š” Boolean(value)์™€ ๊ฐ™์€ ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.
    • !!5 === Boolean(5)

4.2. ๋А๋‚€ ์ 

!์€ ์ž์ฃผ ์ผ์—ˆ์ง€๋งŒ !!์€ ์‚ฌ์‹ค ์ฒ˜์Œ ๋ดค๋Š”๋ฐ ์–ด๋–ค ๊ฐ’์˜ boolean ๊ฐ’์„ ์–ป๊ณ  ์‹ถ์„ ๋•Œ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.


5. 3๊ฐœ ์ด์ƒ์˜ switch ๋ฌธ์„ ์–ด๋–ป๊ฒŒ 3ํ•ญ ์—ฐ์‚ฐ์ž๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์ฝ”๋“œ๋กœ ์˜ˆ์‹œ๋ฅผ ๋“ค๋ผ.

5.1. ์„ค๋ช…

์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋Š” conditional operator ๋˜๋Š” ternary operator๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ฐ์‚ฐ์ž ์ค‘ ์œ ์ผํ•˜๊ฒŒ 3๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ–๋Š”๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๊ฐœ ์ด์ƒ์˜ case๋ฅผ ๊ฐ–๋Š” switch ๋ฌธ์ด ์žˆ๋‹ค๊ณ  ํ•˜์ž.

const value = 4;

switch (value) {
  case 1:
    console.log('one');
    break;
  case 2:
    console.log('two');
    break;
  case 3:
    console.log('three');
    break;
  default:
    console.log('nothing');
}

value ๊ฐ’์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์˜ˆ์ œ์ธ๋ฐ, ์ด ์ฝ”๋“œ๋ฅผ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ ๋ฐ”๊พธ์–ด ๋˜‘๊ฐ™์ด ๋™์ž‘ํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ ๋ฐ”๊พผ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

const value = 4;

value === 1 ? console.log('one')
: value === 2 ? console.log('two')
: value === 3 ? console.log('three')
: console.log('nothing');

3๊ฐ€์ง€ case์ผ ๋•Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๊ทธ ์ด์ƒ์˜ case๊ฐ€ ์žˆ์–ด๋„ ์œ„์™€ ๊ฐ™์ด ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

5.2. ๋А๋‚€ ์ 

2๊ฐœ์˜ ์ผ€์ด์Šค๊ฐ€ ์žˆ์„ ๋•Œ๋งŒ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ–ˆ์—ˆ๋Š”๋ฐ 3๊ฐœ ์ด์ƒ์˜ ์ผ€์ด์Šค์—์„œ๋„ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑธ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋๋‹ค. ๋˜, if-else ๋ฌธ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ switch ๋ฌธ๋„ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋กœ ๋ฐ”๊ฟ” ์“ธ ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ฝ”๋“œ ์ž‘์„ฑ ์ค‘ ์ ํ•ฉํ•œ ๊ฒฝ์šฐ์— ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์ž˜ ์ด์šฉํ•˜๋ฉด ๋”์šฑ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.


6. ==์™€ ===์˜ ์ฐจ์ด๋Š” ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ๊ฐ€?

6.1. ์„ค๋ช…

  • ==๋Š” Double equals๋กœ ๋А์Šจํ•œ ๊ฐ™์Œ(abstract comparison)์„ ๋น„๊ตํ•œ๋‹ค. ==๋Š” ๋น„๊ตํ•˜๋ ค๋Š” ๋‘ ๊ฐ’์ด type์ด ๋‹ค๋ฅด๋ฉด ๋น„๊ต ๊ฐ€๋Šฅํ•œ ๊ฐ™์€ type์œผ๋กœ ๊ฐ•์ œ ํ˜• ๋ณ€ํ™˜์„ ํ•œ ํ›„ ์—„๊ฒฉํ•œ ๋น„๊ต๋ฅผ ํ•œ๋‹ค.
  • ===๋Š” Triple equals๋กœ ์—„๊ฒฉํ•œ ๊ฐ™์Œ(strict comparison)์„ ๋น„๊ตํ•œ๋‹ค. ===๋Š” ๋น„๊ตํ•˜๋ ค๋Š” ๋‘ ๊ฐ’์˜ type๊ณผ value๊ฐ€ ๋ชจ๋‘ ๊ฐ™์„ ๋•Œ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

6.2. ๊ธฐ์–ตํ• ๋งŒํ•œ ์˜ˆ์™ธ๋“ค

6.2.1. ==๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ
  • 0๊ณผ ''(๋นˆ ๋ฌธ์ž์—ด)์€ false์™€ ๊ฐ™๋‹ค.
    • 0 == false
    • '' == false
  • null๊ณผ undefined๋Š” ์„œ๋กœ ๊ฐ™์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒƒ๋“ค๊ณผ๋Š” ๊ฐ™์ง€ ์•Š๋‹ค.
    • null == undefined
  • NaN์€ ์ž๊ธฐ ์ž์‹ ์ธ NaN์„ ํฌํ•จํ•˜์—ฌ ๊ทธ ์–ด๋–ค ๊ฒƒ๊ณผ๋„ ๊ฐ™์ง€ ์•Š๋‹ค.
  • Infinity๋Š” true์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜์ง€๋งŒ true๋‚˜ false์™€ ๋น„๊ตํ•  ์ˆ˜ ์—†๋‹ค.
  • ๋นˆ ๋ฐฐ์—ด []์€ true์ฒ˜๋Ÿผ ์‚ฌ์šฉ๋˜์ง€๋งŒ 0, '', false์™€ ๋น„๊ตํ•˜๋ฉด ๊ฐ™๋‹ค.
    • [] == 0
    • [] == ''
    • [] == false
6.2.2. ===๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ
  • NaN์€ ์ž๊ธฐ ์ž์‹ ์ธ NaN๊ณผ๋„ ๋น„๊ตํ•  ์ˆ˜ ์—†๋‹ค.

6.3. ๋А๋‚€ ์ 

==์ด ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ ์ „์— ๊ฐ•์ œ๋กœ ํ˜• ๋ณ€ํ™˜์„ ํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์ƒˆ๋กœ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ  ==์— ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์šด ์˜ˆ์™ธ์ƒํ™ฉ์ด ๋งŽ๋‹ค๋Š” ๊ฒƒ๋„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์›ฌ๋งŒํ•˜๋ฉด ===์„ ์“ฐ๋ผ๋Š” ๋ง๋งŒ ๋“ค์—ˆ์ง€ ์™œ ๊ทธ๋Ÿฐ์ง€ ์ •ํ™•ํžˆ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ์•Œ์•„๋ณด๋ฉด์„œ ์ด์œ ๋ฅผ ์ฒด๊ฐํ•˜๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค. ์•ž์œผ๋กœ ์ตœ๋Œ€ํ•œ ===๋งŒ ์“ธ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ , ์–ด์ฉ” ์ˆ˜ ์—†์ด ==์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์˜ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ™•์‹คํžˆ ํ™•์ธํ•œ ํ›„ ์‚ฌ์šฉํ•ด์•ผ๊ฒ ๋‹ค.


7. const value = a || b; ์ฝ”๋“œ์˜ ์˜๋ฏธ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

7.1. ์„ค๋ช…

  • || ์€ Logical OR๋ผ๊ณ  ํ•˜๋ฉฐ ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋กœ, ๋น„๊ตํ•˜๋Š” ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋งŒ true์—ฌ๋„ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ชจ๋‘ false์ด๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • const value = a || b; ๋Š” ์œ„์™€ ๊ฐ™์€ ์›๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณ€์ˆ˜ ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. a์™€ b๊ฐ€ boolean ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ผ๋ฉด ์›๋ž˜ ์ž‘๋™ ๋ฐฉ์‹๋Œ€๋กœ true๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒ ์ง€๋งŒ, boolean์ด ์•„๋‹Œ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์ด๋ผ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘๋™ํ•œ๋‹ค.
    • true๋กœ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด true๋กœ ํ‰๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
      • undefined || 1 ์€ 1์„ ๋ฐ˜ํ™˜
      • true || 2 ๋Š” true์„ ๋ฐ˜ํ™˜
    • ๋ชจ๋“  ๊ฐ’์ด false๋กœ ํ‰๊ฐ€๋œ๋‹ค๋ฉด ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
      • null || 0 ์€ 0์„ ๋ฐ˜ํ™˜
  • a์™€ b์˜ ์ž๋ฆฌ์—๋Š” ๋ณ€์ˆ˜๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋‚˜ ์ˆ˜์‹๊ณผ ๊ฐ™์€ ํ‘œํ˜„๋„ ์“ธ ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜ํ™˜ ๊ฐ’์„ ํ†ตํ•ด ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ๋˜ํ•œ ๊ฐ์ฒด๋Š” ํ•ญ์ƒ true๋กœ ํ‰๊ฐ€๋œ๋‹ค.
    • (x = 0) || (x = 1) ๋Š” x = 1 ์˜ ๊ฒฐ๊ณผ์ธ 1์„ ๋ฐ˜ํ™˜
  • ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž๋Š” ๊ฒฐ๊ณผ๋ฅผ ํ™•์ • ์ง€์„ ์ˆ˜ ์žˆ์„ ๋•Œ ํ‰๊ฐ€๋ฅผ ๋ฉˆ์ถ”๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” '๋‹จ์ถ• ํ‰๊ฐ€(Short-circuit evaluation)'๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • || ์€ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋งŒ true์—ฌ๋„ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ true์ด๊ธฐ ๋•Œ๋ฌธ์—, ์™ผ์ชฝ๋ถ€ํ„ฐ ํ‰๊ฐ€๋ฅผ ์‹œ์ž‘ํ•ด์„œ true๋กœ ํ‰๊ฐ€๋˜๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ๋”์ด์ƒ ์ง„ํ–‰ํ•˜์ง€ ์•Š๊ณ  true๋กœ ํ‰๊ฐ€๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.
    • true || (x = 1) ๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ž๊ฐ€ true์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์ธ์ž์ธ x = 1 ์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜ x์—๋Š” 1์ด ํ• ๋‹น๋˜์ง€ ์•Š๋Š”๋‹ค.

7.2. ๋А๋‚€ ์ 

๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ||์€ ์ข…์ข… ์‚ฌ์šฉํ•˜๋˜ ๊ฒƒ์ด์—ˆ๋Š”๋ฐ ์ข€ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘๋™ ๋ฐฉ์‹์„ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ๋‹จ์ถ• ํ‰๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ƒ๊ฐ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ๋™์ž‘ํ•˜๊ณ  ์žˆ๋‹ค๋Š”๊ฑธ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์‚ฌ์šฉํ•˜๋ ค๋Š” ์–ด๋–ค ๊ฐ’์˜ ๋‹จ์ˆœํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ ํ• ๋‹น์— ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™๊ณ  ๊ฐ„๋‹จํ•œ if ๋ฌธ์„ ๋Œ€์‹ ํ•ด์„œ ๋”์šฑ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค.


8. eval ์€ ๋ฌด์—‡์ธ๊ฐ€?

8.1. ์„ค๋ช…

8.1.1. eval() ์ด๋ž€?
  • eval()์€ ๋ฌธ์ž์—ด๋กœ ๋œ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•œ ํ›„ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
  • eval('2 + 2') === 4
8.1.2. eval()์˜ ๋‹จ์ 

eval ํ•จ์ˆ˜๋Š” ๋™์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๋Š” ํŽธ๋ฆฌํ•˜๊ณ  ์‰ฌ์šด ๋ฐฉ๋ฒ•์ด์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ์—ฌ๋Ÿฌ ๋‹จ์ ๋“ค์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ตœ๋Œ€ํ•œ ์‚ฌ์šฉ์„ ํ”ผํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

  • eval ํ•จ์ˆ˜๋Š” eval์ด ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” scope๋‚ด์˜ ๋ณ€์ˆ˜๋“ค์„ ๋„ˆ๋ฌด ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝ์‹œํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ์˜ ์˜ˆ์ธก์„ ์–ด๋ ต๊ฒŒ ํ•œ๋‹ค.
  • ๋””๋ฒ„๊น…์ด ์–ด๋ ต๋‹ค. (evalํ•จ์ˆ˜๋กœ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋Š” ์ค„๋ฒˆํ˜ธ๊ฐ€ ์—†๋‹ค.)
  • eval ํ•จ์ˆ˜๋Š” ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์— ์ตœ์ ํ™”๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋งค์šฐ ๋А๋ฆฌ๋‹ค.
  • eval ํ•จ์ˆ˜ ์‚ฌ์šฉ์ด ๋ณด์•ˆ์„ ์ทจ์•ฝํ•˜๊ฒŒ ๋งŒ๋“ค ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค. (์‚ฌ์šฉ์ž ์ž…๋ ฅ์— ๊ด€ํ•œ ๋ณด์•ˆ ์ด์Šˆ๊ฐ€ ์žˆ๋‹ค.)
8.1.3. eval() ๋Œ€์‹  ์‚ฌ์šฉํ•˜๊ธฐ
  • ๋™์ ์œผ๋กœ ๊ฐ์ฒด ์†์„ฑ์— ์ ‘๊ทผํ•  ๋•Œ ์†์„ฑ ์ ‘๊ทผ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

    eval( 'var result = obj.' + propName ); ๋Œ€์‹  var result = obj[ propName ];

  • ์งง์€ ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ  ์ˆ˜ํ–‰ํ•  ๋•Œ ํ•จ์ˆ˜ ์ƒ์„ฑ์ž ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ

    • eval ๋Œ€์‹  ํ•จ์ˆ˜ ์ƒ์„ฑ์ž ์‚ฌ์šฉ

      function looseJsonParse(obj){
          return eval(obj);
      }
      console.log(looseJsonParse(
         "{a:(4-1), b:function(){}, c:new Date()}"
      ))
      function looseJsonParse(obj){
          return Function('"use strict";return (' + obj + ')')();
      }
      console.log(looseJsonParse(
         "{a:(4-1), b:function(){}, c:new Date()}"
      ))
    • ๋ฌธ์ž์—ด ๋Œ€์‹  ํ•จ์ˆ˜ ์‚ฌ์šฉ

      setTimeout(" ... ", 1000); ๋Œ€์‹  setTimeout(function() { ... }, 1000);

  • JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ JSON.parse๋ฅผ ์ด์šฉํ•˜๊ธฐ

8.2. ๋А๋‚€ ์ 

eval ํ•จ์ˆ˜๋Š” ์ด๋ฒˆ์— ์ฒ˜์Œ ์•Œ๊ฒŒ ๋๋Š”๋ฐ ์–ด๋–ค ์ƒํ™ฉ์— ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€๋Š” ์ž˜ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ, ๋‹จ์ ์ด ๋งŽ์€ ํ•จ์ˆ˜์ธ ๊ฒƒ ๊ฐ™์•„์„œ ํ˜น์‹œ ์‚ฌ์šฉํ•  ์ผ์ด ์žˆ์–ด๋„ ์ตœ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ํ•˜์ง€๋งŒ eval ํ•จ์ˆ˜๊ฐ€ ๊ณผ๊ฑฐ์˜ ํ”์ (?)์œผ๋กœ ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์€ ๊ณณ์— ์‚ฌ์šฉ๋ผ์žˆ๋‹ค๊ณ  ํ•˜๋‹ˆ, ์ด๋ฒˆ ๊ณต๋ถ€๊ฐ€ ๋ ˆ๊ฑฐ์‹œ ์ฝ”๋“œ๋ฅผ ํ•ด์„ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•ด์•ผ ํ•  ์ผ์ด ์ƒ๊ฒผ์„ ๋•Œ ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค.


9. ๋ณ€์ˆ˜๊ฐ’์„ ์ถœ๋ ฅํ•  ๋•Œ null, undefined, is not defined๋กœ ์ถœ๋ ฅ๋˜๋Š” ์ฐจ์ด์ ์€ ๋ฌด์—‡์ธ๊ฐ€?

9.1. ์„ค๋ช…

9.1.1. null

null ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ์–ด๋–ค ๊ฐ์ฒด ๊ฐ’์˜ '์˜๋„์ ์ธ ์—†์Œ'์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์ด๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ง„ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ null ์ด ์ถœ๋ ฅ๋œ๋‹ค.

  • ๊ณ ์˜๋กœ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด '์—†์Œ'์„ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€์ˆ˜์— ์ง์ ‘ null ์„ ํ• ๋‹นํ–ˆ์„ ๋•Œ

    let value = null; // value is null
  • ํŠน์ • ์กฐ๊ฑด์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด์˜ ๊ฐ’์„ ์ฐพ์ง€ ๋ชปํ–ˆ์„ ๋•Œ ๋ฐ˜ํ™˜

    let value = 'abc'.match(/[0-9]/); // value is null
    let saveButton = document.getElementById("save"); // saveButton is null
9.1.2. undefined

undefined ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋งŽ์€ ๊ฒฝ์šฐ์— undefined ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š”๋ฐ ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— undefined ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

  • ์„ ์–ธ๋งŒ ๋˜๊ณ  ์•„์ง ์ดˆ๊ธฐ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ–ˆ์„ ๋•Œ

    let value;
    console.log(value); // value is undefined
  • ํ•จ์ˆ˜์— ์ •์˜๋œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ธ์ž๊ฐ€ ๋“ค์–ด์˜ค์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

    function sum(val1, val2) {
      return val1 + val2; // val2 is undefined
    }
    
    sum(5);
  • ํ•จ์ˆ˜์—์„œ ์–ด๋–ค ๊ฐ’๋„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

    function sum(val1, val2) {
      let result = val1 + val2;
    }
    
    let result = sum(5, 5); // result is undefined
9.1.3. "x" is not defined

"x" is not defined ๋Š” ReferenceError ํƒ€์ž…์˜ ํ•˜๋‚˜๋กœ ์ „์ฒด ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋Š” ReferenceError: "x" is not defined ์ด๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ์–ด๋”˜๊ฐ€์—์„œ ์ฐธ์กฐํ–ˆ์„ ๋•Œ ๋‚˜ํƒ€๋‚˜๋Š” ์—๋Ÿฌ ๋ฉ”์„ธ์ง€์ด๋‹ค. ๋Œ€ํ‘œ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์— ์ด ์—๋Ÿฌ ๋ฉ”์„ธ์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

  • ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์ง€ ์•Š์•˜์„ ๋•Œ

    console.log(value); // ReferenceError: value is not defined
    let value;
  • ์ž˜๋ชป๋œ scope์—์„œ ์ ‘๊ทผํ–ˆ์„ ๋•Œ

    function numbers() {
      let num = 1;
      return num;
    }
    
    console.log(num); // ReferenceError: num is not defined.

9.2. ๋А๋‚€ ์ 

null ๊ณผ undefined ์— ๋Œ€ํ•ด์„œ ๋ช…ํ™•ํžˆ ์•Œ๊ฒŒ ๋˜์—ˆ๊ณ , ์–ด๋–จ ๋•Œ is not defined ๋ผ๋Š” ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผ์น˜๋Š”์ง€๋„ ์•Œ๊ฒŒ ๋˜์–ด์„œ ํ”„๋กœ๊ทธ๋žจ์„ ๊ตฌํ˜„ํ•˜๋ฉฐ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๋ฅผ ์ข€ ๋” ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋˜, ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ํ›„ ์ตœ๋Œ€ํ•œ ์ดˆ๊ธฐ๊ฐ’์„ ํ• ๋‹นํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋ฌธ์ œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ํ™•๋ฅ ์„ ๋‚ฎ์ถฐ์ค„ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.


10. add(10)(2) //12 ๊ฐ€ ๋˜๋„๋ก ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ

10.1. ์„ค๋ช…

  • add ํ•จ์ˆ˜๋Š” '๋‹ค์Œ ์ธ์ž๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜'๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

  • add ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ํ•จ์ˆ˜๋Š” ์ž…๋ ฅ๋ฐ›์€ 2๊ฐœ์˜ ์ธ์ž๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.

  • ์œ„์˜ ๋‚ด์šฉ์„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

    function add(num1) {
      return function (num2) {
        return num1 + num2;
      }
    }
    
    const result = add(10)(2); // result is 12

    ์ด์ฒ˜๋Ÿผ add ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋œ ์ต๋ช… ํ•จ์ˆ˜์—์„œ ์ง€์—ญ scope๋ฅผ ๋ฒ—์–ด๋‚œ ๋ณ€์ˆ˜ num1์— ์ ‘๊ทผํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๋Š” closure ๊ฐœ๋… ๋•Œ๋ฌธ์ด๋‹ค. closure๋ž€, ์–ด๋–ค ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑ๋˜๋Š” ์‹œ์ ์— ์กด์žฌํ•˜๋Š” execution context์™€ lexical environment๋ฅผ ํฌํ•จํ•˜๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ํ™˜๊ฒฝ์„ ๋œปํ•œ๋‹ค.

  • ์œ„์˜ ์ฝ”๋“œ๋ฅผ arrow function์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๊ฒฐํ•˜๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค.

    const add = num1 => num2 => num1 + num2;
    const result = add(10)(2); // result is 12

10.2. ๋А๋‚€ ์ 

์ด๋ฒˆ ์งˆ๋ฌธ์€ ์ด๋ฏธ ์˜ˆ์ „์— pipe ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์—ฐ์Šตํ•ด ๋ณธ ์ ์ด ์žˆ์–ด์„œ ์‰ฝ๊ฒŒ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํ•˜์ง€๋งŒ closure๋Š” ์—ฌ๋Ÿฌ ๋ฒˆ ๋ณธ ๊ฐœ๋…์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์•„๋Š” ๊ฒƒ ๊ฐ™์•˜์ง€๋งŒ ์งง๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค๊ณ  ๋А๊ผˆ๋‹ค. closure์™€ ๊ด€๋ จ ์žˆ๋Š” ๊ฐœ๋…๋“ค์— ๋Œ€ํ•ด ๊ธฐํšŒ๊ฐ€ ๋  ๋•Œ ์ข€ ๋” ์ž์„ธํžˆ ๊ณต๋ถ€ํ•ด๋ณด๊ณ  ์‹ถ๋‹ค.


11. ํ•จ์ˆ˜์˜ ์ธ์ž ๊ฐœ์ˆ˜์™€ ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ์–ด๋–ค ์ผ์ด ์ƒ๊ธฐ๋Š”๊ฐ€ ์„ค๋ช…ํ•˜๊ธฐ

11.1. ์„ค๋ช…

11.1.1. ํ•จ์ˆ˜์˜ ์ธ์ž ๊ฐœ์ˆ˜๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ณด๋‹ค ๋งŽ์„ ๋•Œ
  • ํ•จ์ˆ˜์— ์„ ์–ธ๋œ ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒํผ๋งŒ ์ธ์ž๋ฅผ ๋ฐ›๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋ฌด์‹œ๋œ๋‹ค.
  • 'arguments' ๋ผ๋Š” ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ž…๋ ฅ๋œ ๋ชจ๋“  ์ธ์ž์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • 'arguments' ๋Š” ๋ฐฐ์—ด ๊ฐ™์€ ๊ตฌ์กฐ์ด์ง€๋งŒ ๋ฐฐ์—ด์€ ์•„๋‹ˆ๋ฏ€๋กœ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
  • Rest parameter๋Š” ๋ฐฐ์—ด์ด๋ฏ€๋กœ 'arguments' ๋Œ€์‹  Rest parameter๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋‹ค.
11.1.2. ํ•จ์ˆ˜์˜ ์ธ์ž ๊ฐœ์ˆ˜๊ฐ€ ํŒŒ๋ผ๋ฏธํ„ฐ๋ณด๋‹ค ์ ์„ ๋•Œ
  • ํ•จ์ˆ˜์—์„œ ์ž…๋ ฅ๋ฐ›์€ ์ธ์ž์™€ ๋Œ€์‘๋˜์ง€ ๋ชปํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ฐ’์ด undefined๋กœ ํ• ๋‹น๋œ๋‹ค.
  • ๋Œ€์‘๋˜์ง€ ๋ชปํ•  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•ด์ฃผ๋Š” ๊ฒŒ ์ข‹๋‹ค.

11.2. ๋А๋‚€ ์ 

์›๋ž˜ ์•Œ๊ณ  ์žˆ๋˜ ๋‚ด์šฉ์ด์ง€๋งŒ ํ™•์‹คํ•˜๊ฒŒ ์ •๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๊ณ , ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฐ›์œผ๋ ค๋Š” ์ธ์ž ๊ฐœ์ˆ˜์™€ ๋งž์ถฐ์„œ ์„ ์–ธํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋˜ํ•œ, ๋ฐ›์œผ๋ ค๋Š” ์ธ์ž ๊ฐœ์ˆ˜์˜ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” arguments ๊ฐ์ฒด๋ณด๋‹ค๋Š” ES6์—์„œ ์ถ”๊ฐ€๋œ Rest parameter๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์œ ์šฉํ•  ๊ฒƒ ๊ฐ™๋‹ค.


12. ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์„ ๋•Œ ์–ด๋–ป๊ฒŒ ๋˜๋Š”๊ฐ€?

12.1. ์„ค๋ช…

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋Š” ํ•ญ์ƒ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ณดํ†ต return ๋ฌธ์„ ์ด์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, return ๋ฌธ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ๋‹ค.

  • ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ return ๋ฌธ์„ ๋งŒ๋‚˜๋ฉด ํ•จ์ˆ˜๋Š” ๋” ์ด์ƒ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๋œ๋‹ค.
  • ํŠน์ • ๊ฐ’๊ณผ ํ•จ๊ป˜ return ๋ฌธ์ด ์‚ฌ์šฉ๋๋‹ค๋ฉด ํ•จ์ˆ˜๋Š” ๊ทธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ข…๋ฃŒํ•œ๋‹ค.
  • return ๋ฌธ์— ์–ด๋–ค ๊ฐ’๋„ ์ฃผ์–ด์ง€์ง€ ์•Š๊ณ  ์‚ฌ์šฉ๋๋‹ค๋ฉด ํ•จ์ˆ˜๋Š” undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ข…๋ฃŒํ•œ๋‹ค.

ํ•จ์ˆ˜ ์•ˆ์— return ๋ฌธ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ํ•จ์ˆ˜ ๋‚ด ๋ชจ๋“  ๊ตฌ๋ฌธ์ด ์‹คํ–‰๋œ ํ›„ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ข…๋ฃŒ๋œ๋‹ค.

12.2. ๋А๋‚€ ์ 

ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์„ ๋•Œ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ , ํŠน๋ณ„ํ•œ ๊ฐ’ ์—†์ด return๋งŒ ์‚ฌ์šฉํ•ด๋„ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ํ•จ์ˆ˜์—์„œ ํŠน๋ณ„ํžˆ ๋ฐ˜ํ™˜ํ•  ๊ฐ’์ด ์—†๋‹ค๋ฉด ๊ตณ์ด return ๋ฌธ์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋˜, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ undefined๋Š” ๋ณดํ†ต false๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜์—์„œ ์•„๋ฌด๋Ÿฐ ๋ฐ˜ํ™˜ ๊ฐ’์ด ์—†์„ ๋•Œ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์•Œ์•„์„œ undefined๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๊ฒŒ ํŽธ๋ฆฌํ•œ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.


13. ์ต๋ช… ํ•จ์ˆ˜๋Š” ๋ฌด์—‡์ธ๊ฐ€?

13.1. ์„ค๋ช…

์ต๋ช… ํ•จ์ˆ˜๋ž€ ์˜์–ด๋กœ๋Š” Anonymous functions๋ผ๊ณ  ํ•˜๋ฉฐ, '์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜'๋“ค์„ ๋งํ•œ๋‹ค.

13.1.1. ์ต๋ช… ํ•จ์ˆ˜ ํ‘œํ˜„์˜ ์˜ˆ
  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹ (Function expression)

    const add = function (param1, param2) {
      return param1 + param2;
    }
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ (Arrow functions)

    const add = (param1, param2) => param1 + param2;
  • ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ (IIFE, Immediately Invoked Function Expression)

    (function () {
      console.log('IIFE');
    })();
13.1.2. ์ต๋ช… ํ•จ์ˆ˜์˜ ํŠน์ง•
  • ์ต๋ช… ํ•จ์ˆ˜๋Š” ์ด๋ฆ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์งง๊ณ  ๊ฐ„๊ฒฐํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์ต๋ช… ํ•จ์ˆ˜๋Š” ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋Š” ์ผํšŒ์„ฑ ํ•จ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์œ ์šฉํ•˜๋‹ค.
  • ์ต๋ช… ํ•จ์ˆ˜๋Š” ๋ณดํ†ต ์•„์ฃผ ์งง๊ณ  ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋‚˜, ์ฝœ๋ฐฑ ํ•จ์ˆ˜, ์ฆ‰์‹œ ์‹คํ–‰์‹œํ‚ฌ ํ•จ์ˆ˜์— ์ ๋‹นํ•˜๋‹ค.
  • ์ต๋ช… ํ•จ์ˆ˜๋Š” ํŽธ๋ฆฌํ•˜์ง€๋งŒ ์ด๋ฆ„์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊น…์ด ์–ด๋ ค์šธ ์ˆ˜ ์žˆ๋‹ค.

13.2. ๋А๋‚€ ์ 

์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์–ด๋–ค ๊ฒฝ์šฐ์— ์“ฐ๋ฉด ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„์ง€ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ํŠนํžˆ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋Š” ์ฃผ๋กœ ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰๋  ์™ธ๋ถ€ ์ฝ”๋“œ(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ์™€ ๊ฐ™์€)๋ฅผ ๊ฐ€์ ธ๋‹ค ์“ธ ๋•Œ ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์˜ค์—ผ์‹œํ‚ค์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ด์œ  ์—†์ด ๋ฌด๋ถ„๋ณ„ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒฝ์šฐ ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›Œ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์šฉ๋„์— ๋งž๊ฒŒ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค.

About

Codesquad Level 2

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors