๐Ÿง  JavaScript Type Coercion โ€” ๊ฐ€๋ฅด์น˜๋Š” ์งˆ๋ฌธ

๋ฐœํ–‰: (2026๋…„ 2์›” 7์ผ ์˜คํ›„ 03:33 GMT+9)
4 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

Source: Dev.to

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹ ์ค‘์— ๋ณด๊ธฐ์—” ํ‹€๋ ค ๋ณด์ด์ง€๋งŒ 100โ€ฏ% ์œ ํšจํ•œ ๊ฒƒ์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๐Ÿ‘€

[] == ![]

์ฒซ๋ˆˆ์— ๋Œ€๋ถ€๋ถ„์€ ์ด ๊ฒฐ๊ณผ๊ฐ€ false์ผ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ‘‰โ€ฏํ•˜์ง€๋งŒ ์‹ค์ œ ๊ฒฐ๊ณผ๋Š” true์ž…๋‹ˆ๋‹ค.

Stepโ€ฏ1: ๋…ผ๋ฆฌ NOT ํ‰๊ฐ€

![]
  • []๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“  ๊ฐ์ฒด๋Š” truthyํ•ฉ๋‹ˆ๋‹ค.
  • truthy ๊ฐ’์— !๋ฅผ ์ ์šฉํ•˜๋ฉด false๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด์ œ ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฉ๋‹ˆ๋‹ค:

[] == false

Stepโ€ฏ2: ๋А์Šจํ•œ ๋™๋“ฑ ์—ฐ์‚ฐ์ž(==)๊ฐ€ ํƒ€์ž… ๊ฐ•์ œ ๋ณ€ํ™˜์„ ์ผ์œผํ‚ด

==์˜ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ Boolean์ด๋ฉด, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋จผ์ € Boolean์„ Number๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

  • false โ†’ 0 (๊ทธ๋ฆฌ๊ณ  true โ†’ 1).

๋”ฐ๋ผ์„œ ๋น„๊ต๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๋€๋‹ˆ๋‹ค:

[] == 0

Stepโ€ฏ3: ๊ฐ์ฒดโ€‘์›์‹œ๊ฐ’ ๋ณ€ํ™˜

๊ฐ์ฒด์™€ ์›์‹œ๊ฐ’์„ ==๋กœ ๋น„๊ตํ•  ๋•Œ๋Š” default ํžŒํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜๋ฉฐ, ์ด๋Š” โ€œNumberโ€ ๋ณ€ํ™˜ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค:

  1. ๋จผ์ € valueOf()๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค(๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ ์ž์‹ ์„ ๋ฐ˜ํ™˜).
  2. ์›์‹œ๊ฐ’์ด ์–ป์–ด์ง€์ง€ ์•Š์œผ๋ฉด toString()์ด ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค.
[].toString() // ""

์ด์ œ ๋น„๊ต๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

"" == 0

Stepโ€ฏ4: ์ตœ์ข… ๊ฐ•์ œ ๋ณ€ํ™˜

๋ฌธ์ž์—ดโ€‘์ˆซ์ž ๋น„๊ต์—์„œ๋Š” ๋ฌธ์ž์—ด์ด ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค:

  • Number("") โ†’ 0

๋”ฐ๋ผ์„œ ์ตœ์ข… ๋น„๊ต๋Š”:

0 == 0   // true

โœ… ๊ฒฐ๊ณผ: true

๐Ÿ”‘ ํ•ต์‹ฌ ์ •๋ฆฌ

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์—„๊ฒฉํ•˜๊ณ  ๊ฒฐ์ •์ ์ธ ๊ฐ•์ œ ๋ณ€ํ™˜ ๊ทœ์น™์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
  • ==๋Š” ์•”์‹œ์  ๋ณ€ํ™˜์„ ํ—ˆ์šฉํ•˜๋ฏ€๋กœ ๋†€๋ผ์šด ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด์€ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค ([] โ†’ "").
  • Boolean์€ ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค (false โ†’ 0, true โ†’ 1).
  • ๊ทœ์น™์„ ์•Œ๋ฉด ์ด๋Ÿฐ ๋™์ž‘์„ ์˜ˆ์ธกํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‹ค์ œ ํ”„๋กœ๋•์…˜ ์ฝ”๋“œ์—์„œ๋Š” ===(์—„๊ฒฉ ๋™๋“ฑ) ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

+ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ฐ•์ œ ๋ณ€ํ™˜

์‚ฌ๋ก€โ€ฏ1: [] + 1

๊ฒฐ๊ณผ: "1"

  • +๋Š” ์ˆซ์ž ๋ง์…ˆ ๋˜๋Š” ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์„ ์˜๋ฏธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด ๋˜๋ฉด ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.
  • [] โ†’ "" (๋นˆ ๋ฌธ์ž์—ด).
"" + 1   // "1"

- ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ํƒ€์ž… ๊ฐ•์ œ ๋ณ€ํ™˜

์‚ฌ๋ก€โ€ฏ2: [] - 1

๊ฒฐ๊ณผ: -1

  • -๋Š” ์ˆซ์ž ์—ฐ์‚ฐ ์ „์šฉ์ด๋ฏ€๋กœ ์–‘์ชฝ ๋ชจ๋‘ ์ˆซ์ž๋กœ ๊ฐ•์ œ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • [] โ†’ "" โ†’ 0.
0 - 1    // -1

๐Ÿš€ ๋„์ „ ๊ณผ์ œ (๊ฐ์ฒด ๋น„๊ต)

์ด์ œ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ผ๋ฐ˜ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋‹ค์Œ์„ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”:

{} == !{}
{} - 1
{} + 1

์ถœ๋ ฅ์€ ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š” โ€” ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?

Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

๋‚ด ํ•™์Šต ๋…ธํŠธ

์ €๋Š” 11๋…„ ๋™์•ˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•ด์™”์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ์›น์„ ๋‹ค๋ฃจ์ง€๋งŒ ๋ฐฑ์—”๋“œ, ๋ชจ๋ฐ”์ผ, DevOps, AI ๋“ฑ ์ƒ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๋ถ„์•ผ์— ์†์„ ๋Œ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค; ์•„์ง๋„ ์ข…์ข… ๋‚˜๋Š” โ€ฆ๋ผ๊ณ  ๋А๋‚๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ๋ฌด๋ฃŒ ์ž„๋ฒ ๋“œ ๊ฐ€๋Šฅํ•œ ์ฃผ์‹ ๊ฐ์„ฑ ์œ„์ ฏ์„ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค โ€” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

์„ธ ๊ฐ€์ง€ ์ž„๋ฒ ๋”๋ธ” ์ฃผ์‹ ๊ฐ์„ฑ ์œ„์ ฏ ์šฐ๋ฆฌ๋Š” ์ •๋ง ๊ธฐ๋Œ€๋˜๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐฉ๊ธˆ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค: ์–ด๋–ค ๊ฐœ๋ฐœ์ž๋ผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ธ ๊ฐ€์ง€ ์ž„๋ฒ ๋”๋ธ” ์ฃผ์‹ ๊ฐ์„ฑ ์œ„์ ฏโ€ฆ

React ํ€ด์ฆˆ ์•ฑ

React Quiz App ๐Ÿง  ์ด ํ”„๋กœ์ ํŠธ๋Š” React ๊ธฐ๋ณธ ๊ฐœ๋…, ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์•„ํ‚คํ…์ฒ˜, ๊ทธ๋ฆฌ๊ณ  ํšจ์œจ์ ์ธ ์ƒํƒœ ๊ด€๋ฆฌ์— ๋Œ€ํ•œ ์‹ค์ „ ์ดํ•ด๋ฅผ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. Live demo...