[TIL] 220107

leesyongยท2022๋…„ 1์›” 7์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
142/204
post-thumbnail

๐Ÿ“ ์˜ค๋Š˜ ํ•œ ๊ฒƒ

  1. ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์ข…๋ฅ˜ / ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ / ์‹๋ณ„์ž์™€ ๋ณ€์ˆ˜ / ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋ฐ์ดํ„ฐ ํ• ๋‹น / ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ / ๋ถˆ๋ณ€๊ฐ’, ๊ฐ€๋ณ€๊ฐ’, ๋ณ€์ˆ˜ ๋ณต์‚ฌ ๋น„๊ต / ๋ถˆ๋ณ€ ๊ฐ์ฒด / ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ / JSON์„ ํ™œ์šฉํ•œ ๊ฐ„๋‹จํ•œ ๊นŠ์€ ๋ณต์‚ฌ / undefined์™€ null

๐Ÿ“– ํ•™์Šต ์ž๋ฃŒ

  1. ์ฑ… ใ€Ž์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธใ€

๐Ÿ“š ๋ฐฐ์šด ๊ฒƒ

1. ๋ฐ์ดํ„ฐ ํƒ€์ž…

1) ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ์ข…๋ฅ˜

(1) ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…

์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ(Boolean), null, undefined, ์‹ฌ๋ณผ(symbol)

(2) ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…

๊ฐ์ฒด, ๋ฐฐ์—ด, ํ•จ์ˆ˜, ๋‚ ์งœ(Date), ์ •๊ทœํ‘œํ˜„์‹(RegExp), Map, WeakMap, Set, WeakSet

๋ณดํ†ต '๊ธฐ๋ณธํ˜•์€ ๊ฐ’์„ ๋ณต์‚ฌํ•˜๊ณ  ์ฐธ์กฐํ˜•์€ ์ฃผ์†Œ๊ฐ’์„ ๋ณต์‚ฌํ•œ๋‹ค'๊ณ  ์„ค๋ช…ํ•œ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜, ์—„๋ฐ€ํžˆ ๋งํ•˜๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋“  ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ์†Ÿ๊ฐ’์„ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธํ˜•๋„ ๊ฒฐ๊ตญ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ฐจ์ด์ ์ด๋ผ๋ฉด ๊ธฐ๋ณธํ˜•์€ ๊ฐ’์ด ๋‹ด๊ธด ์ฃผ์†Ÿ๊ฐ’์„ ๋ฐ”๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ˜๋ฉด, ์ฐธ์กฐํ˜•์€ ๊ฐ’์ด ๋‹ด๊ธด ์ฃผ์†Ÿ๊ฐ’๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌถ์Œ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Ÿ๊ฐ’์„ ๋ณต์‚ฌํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
์ด๋กœ ์ธํ•ด ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋ณธํ˜•์€ ๋ถˆ๋ณ€๊ฐ’, ์ฐธ์กฐํ˜•์€ ๊ฐ€๋ณ€๊ฐ’์ด๋ผ๋Š” ์ฐจ์ด์ ์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค.


2) ๋ฐ์ดํ„ฐ ํƒ€์ž…์— ๋Œ€ํ•œ ๋ฐฐ๊ฒฝ์ง€์‹

(1) ๋ฉ”๋ชจ๋ฆฌ์™€ ๋ฐ์ดํ„ฐ

0 ๋˜๋Š” 1๋งŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ๋ฉ”๋ชจ๋ฆฌ ์กฐ๊ฐ์„ ๋น„ํŠธ(bit)๋ผ๊ณ  ํ•˜๋ฉฐ, ๊ฐ ๋น„ํŠธ๋Š” ๊ณ ์œ ํ•œ ์‹๋ณ„์ž๋ฅผ ํ†ตํ•ด ์œ„์น˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
1๋ฐ”์ดํŠธ(bite)๋Š” 8๊ฐœ์˜ ๋น„ํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ , ์‹œ์ž‘ํ•˜๋Š” ๋น„ํŠธ์˜ ์‹๋ณ„์ž๋กœ ์œ„์น˜๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค.
๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋ฐ”์ดํŠธ ๋‹จ์œ„์˜ ์‹๋ณ„์ž, ์ฆ‰ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Ÿ๊ฐ’์„ ํ†ตํ•ด ์„œ๋กœ ๊ตฌ๋ถ„๋˜๊ณ  ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

(2) ์‹๋ณ„์ž์™€ ๋ณ€์ˆ˜

var a = "abc"

๋ณ€์ˆ˜("abc")๋ž€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ๋ž€ ์ˆซ์ž, ๋ฌธ์ž์—ด, ๊ฐ์ฒด, ๋ฐฐ์—ด ๋“ฑ์ด ๋ชจ๋‘ ํ•ด๋‹น๋œ๋‹ค.
ํ•œํŽธ, ์‹๋ณ„์ž(a)๋ž€ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ์ด๋ฆ„, ์ฆ‰ ๋ณ€์ˆ˜๋ช…์„ ๋งํ•œ๋‹ค.


3) ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋ฐ์ดํ„ฐ ํ• ๋‹น

(1) ๋ณ€์ˆ˜ ์„ ์–ธ

var a;

๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋น„์–ด ์žˆ๋Š” ๊ณต๊ฐ„ ํ•˜๋‚˜๋ฅผ ํ™•๋ณดํ•œ๋‹ค.
์ด ๊ณต๊ฐ„์˜ ์ด๋ฆ„(์‹๋ณ„์ž)์„ a๋ผ๊ณ  ์ง€์ •ํ•œ๋‹ค.
์ด ๊ณต๊ฐ„์€ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.

(2) ๋ฐ์ดํ„ฐ ํ• ๋‹น

var a; // ๋ณ€์ˆ˜ a ์„ ์–ธ
a = "abc"; // ๋ณ€์ˆ˜ a์— ๋ฐ์ดํ„ฐ ํ• ๋‹น

var a = "abc"; // ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋ฐ์ดํ„ฐ ํ• ๋‹น์„ ํ•œ ๋ฌธ์žฅ์œผ๋กœ ํ‘œํ˜„

์•ž์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด์„œ ๋ณ€์ˆ˜ ์˜์—ญ์„ ํ™•๋ณดํ–ˆ๋‹ค.
๋‹ค์Œ์œผ๋กœ ํ•ด๋‹น ๋ณ€์ˆ˜์— ๋ฐ์ดํ„ฐ๋ฅผ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ณ„๋„์˜ ๊ณต๊ฐ„ ์ฆ‰, ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ํ™•๋ณดํ•ด์•ผ ํ•œ๋‹ค.
๋ฐ์ดํ„ฐ ์˜์—ญ์— ๋ฌธ์ž์—ด "abc"๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ์ฃผ์†Œ๋ฅผ ๋ณ€์ˆ˜ ์˜์—ญ์— ์ €์žฅํ•œ๋‹ค.

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

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


4) ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ

์œ„์—์„œ ๊ธฐ๋ณธํ˜•์€ ๋ถˆ๋ณ€๊ฐ’์ด๊ณ , ์ฐธ์กฐํ˜•์€ ๊ฐ€๋ณ€๊ฐ’์ด๋ผ๊ณ  ๋งํ–ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ์—ฌ๊ธฐ์„œ ๋ถˆ๋ณ€๊ฐ’๊ณผ ๊ฐ€๋ณ€๊ฐ’์€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์ผ๊นŒ?

(1) ๋ถˆ๋ณ€๊ฐ’

์ƒ์ˆ˜ vs ๋ถˆ๋ณ€๊ฐ’

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

๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…

๋ณ€์ˆ˜ ์˜์—ญ์— ๋ฐ์ดํ„ฐ๋ฅผ ํ• ๋‹นํ•œ ํ›„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌํ• ๋‹นํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
์ด๋•Œ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋‹ค.
๋ฐ”๊พธ๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ์ดํ„ฐ ์˜์—ญ ์–ด๋”˜๊ฐ€์— ์žˆ๋‹ค๋ฉด ์ด๋ฅผ ์ฐพ์•„์„œ ๊ทธ ์ฃผ์†Ÿ๊ฐ’์„ ๋ณ€์ˆ˜ ์˜์—ญ์— ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹นํ•˜๊ณ , ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ ์˜์—ญ์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  ํ›„ ๊ทธ ์ฃผ์†Ÿ๊ฐ’์„ ๋ณ€์ˆ˜ ์˜์—ญ์— ์ƒˆ๋กญ๊ฒŒ ํ• ๋‹นํ•œ๋‹ค.

๋”ฐ๋ผ์„œ, ์ด ๊ฒฝ์šฐ์— ๋ณ€์ˆ˜ ๊ณต๊ฐ„์— ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์žฌํ• ๋‹นํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒ์ˆ˜๊ฐ€ ์•„๋‹Œ '๋ณ€์ˆ˜'์ด์ง€๋งŒ, ์ด๋ฅผ ์œ„ํ•ด ๋ณ€์ˆ˜ ์˜์—ญ์— ํ• ๋‹น๋œ ๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†๊ณ  ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ์žฌํ• ๋‹นํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํ•ด๋‹น ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ '๋ถˆ๋ณ€๊ฐ’'์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํŒ… ๋‹นํ•˜์ง€ ์•Š๋Š” ํ•œ ์˜์›ํžˆ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
์–ด๋–ค ๋ฐ์ดํ„ฐ๋“  ์ž์‹ ์˜ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋„ ์—†๊ฒŒ ๋˜๋ฉด(์ฐธ์กฐ ์นด์šดํŠธ๊ฐ€ 0์ด ๋˜๋ฉด) ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์˜ ์ˆ˜๊ฑฐ ๋Œ€์ƒ์ด ๋œ๋‹ค.
์ˆ˜๊ฑฐ๋œ ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋‹ค์‹œ ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋นˆ ๊ณต๊ฐ„์ด ๋œ๋‹ค.

(2) ๊ฐ€๋ณ€๊ฐ’

์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…

์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ '๊ฐ์ฒด์˜ ๋ณ€์ˆ˜(ํ”„๋กœํผํ‹ฐ) ์˜์—ญ'์„ ๋ณ„๋„๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
๊ธฐ๋ณธํ˜•์€ ๋ณ€์ˆ˜ ์˜์—ญ๊ณผ ๋ฐ์ดํ„ฐ ์˜์—ญ์„ ๊ฐ€์งˆ ๋ฟ์ด์ง€๋งŒ, ์ฐธ์กฐํ˜•์€ ์—ฌ๊ธฐ์— ๊ฐ์ฒด์˜ ๋ณ€์ˆ˜ ์˜์—ญ์„ ์ถ”๊ฐ€๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

์•ž์„œ ์ฐธ์กฐํ˜•์ด ๊ฐ€๋ณ€๊ฐ’์ด๋ผ๊ณ  ํ•œ ๊ฒƒ์€, ์—ฌ๊ธฐ์„œ ๋ฐ์ดํ„ฐ ์˜์—ญ์— ์ €์žฅ๋œ ๊ฐ’์€ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋‘ ๋ถˆ๋ณ€๊ฐ’์ด์ง€๋งŒ, ๊ฐ์ฒด์˜ ๋ณ€์ˆ˜ ์˜์—ญ์—๋Š” ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์–ผ๋งˆ๋“ ์ง€ ์žฌํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

์ค‘์ฒฉ ๊ฐ์ฒด

var obj = {
  x: 3,
  arr: [3, 4, 5],
};

์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ์˜ ๋ณ€์ˆ˜(ํ”„๋กœํผํ‹ฐ)์— ๋‹ค์‹œ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

(3) ๋ณ€์ˆ˜ ๋ณต์‚ฌ ๋น„๊ต

์•ž์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๋“  ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฃผ์†Ÿ๊ฐ’์„ ๋ณต์‚ฌํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธํ˜•๋„ ๊ฒฐ๊ตญ ์ฃผ์†Œ๊ฐ’์„ ์ฐธ์กฐํ•œ๋‹ค๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ–ˆ๋‹ค.
๋”ฐ๋ผ์„œ, ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •์€ ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ ๋ชจ๋‘ ๊ฐ™์€ ์ฃผ์†Œ(๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ์ฃผ์†Ÿ๊ฐ’)๋ฅผ ๋ฐ”๋ผ๋ณด๊ฒŒ ๋œ๋‹ค๋Š” ์ ์—์„œ๋Š” ๋™์ผํ•˜๋‹ค.

๊ทธ๋Ÿฌ๋‚˜, ๊ธฐ๋ณธํ˜•์€ ๊ฐ’์ด ๋‹ด๊ธด ์ฃผ์†Ÿ๊ฐ’(๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ์ฃผ์†Ÿ๊ฐ’)์„ ๋ฐ”๋กœ ๋ณต์‚ฌํ•˜๋Š” ๋ฐ˜๋ฉด, ์ฐธ์กฐํ˜•์€ ๊ฐ’์ด ๋‹ด๊ธด ์ฃผ์†Ÿ๊ฐ’๋“คโ€•๊ฐ์ฒด์˜ ๋ณ€์ˆ˜ ์˜์—ญ์˜ ์ฃผ์†Ÿ๊ฐ’๋“คโ€•๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฌถ์Œ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Ÿ๊ฐ’(๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ์ฃผ์†Ÿ๊ฐ’)์„ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ๋ณต์‚ฌ ์ดํ›„์˜ ๋™์ž‘์—์„œ ํฐ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ

var a = 10;
var b = a;
var obj1 = { c: 10, d: "ddd" };
var obj2 = obj1;

b = 15;
obj2.c = 20;

console.log(a !== b); // true
console.log(obj1 === obj2); // true

์ด์ฒ˜๋Ÿผ ๋ณ€์ˆ˜ ๋ณต์‚ฌ ์ดํ›„ ๊ฐ’์„ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ๊ธฐ๋ณธํ˜•์˜ ๊ฒฝ์šฐ ๋ณต์‚ฌ ์ „ํ›„์˜ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋‹ฌ๋ผ์ง€์ง€๋งŒ ์ฐธ์กฐํ˜•์˜ ๊ฒฝ์šฐ ๊ทธ ๊ฐ’์ด ๋‹ฌ๋ผ์ง€์ง€ ์•Š๋Š”๋‹ค.

๊ธฐ๋ณธํ˜•์€ ๊ฐ’์ด ๋‹ด๊ธด ์ฃผ์†Ÿ๊ฐ’์„ ๋ฐ”๋กœ ๋ณต์‚ฌํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜๋ฅผ ๋ณต์‚ฌํ•œ ํ›„ ๊ฐ’์ด ๋ณ€๊ฒฝ๋˜๋ฉด ๋ณต์‚ฌํ•œ ๋ณ€์ˆ˜ ์˜์—ญ์—๋Š” ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๋Š” ๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ์ฃผ์†Ÿ๊ฐ’์ด ํ• ๋‹น๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณต์‚ฌ ์ „ํ›„์˜ ๋ณ€์ˆ˜์˜ ๊ฐ’์ด ๋‹ฌ๋ผ์ง€๊ฒŒ ๋œ๋‹ค.

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

๊ฐ์ฒด ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ

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


5) ๋ถˆ๋ณ€ ๊ฐ์ฒด

(1) ๋ถˆ๋ณ€ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•

์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋„ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋ฉด(์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ํ• ๋‹นํ•˜๊ณ ์ž ํ•˜๋ฉด) ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ธฐ์กด์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.
๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์žฌํ• ๋‹นํ•˜๊ธฐ๋กœ ๊ทœ์น™์„ ์ •ํ•˜๊ฑฐ๋‚˜ ์ž๋™์œผ๋กœ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋„๊ตฌ๋ฅผ ํ™œ์šฉํ•œ๋‹ค๋ฉด ๊ฐ์ฒด ์—ญ์‹œ ๋ถˆ๋ณ€์„ฑ์„ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ

var user = { // ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ(๊ฐ์ฒด)
  name: "syong",
  gender: "female",
};

var changeName = (user, newName) => {
  var newUser = user; // ๋ณ€์ˆ˜ ๋ณต์‚ฌ
  newUser.name = newUser; // ๊ฐ’ ๋ณ€๊ฒฝ
  return newUser;
};

var user2 = changeName(user, "syongsyong");

if (user !== user2) {
  console.log("user ์ •๋ณด๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
}

console.log(user.name, user.name === user2.name); // syongsyong, true
console.log(user === user2); // true

๋ถˆ๋ณ€ ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•œ ๋Œ€ํ‘œ์ ์ธ ์‚ฌ๋ก€๋กœ๋Š” user ์ •๋ณด์˜ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ๊ฐ์ง€ํ•ด ์•ˆ๋‚ดํ•˜๊ณ ์ž ํ•  ๋•Œ๋ฅผ ๋“ค ์ˆ˜ ์žˆ๋‹ค.
์ด ๊ฒฝ์šฐ user ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ์ด๋ฅผ ๊ฐ์ง€ํ•ด ์•ˆ๋‚ดํ•ด์•ผ ํ•˜๋Š”๋ฐ ๊ฐ์ฒด์˜ ๊ฐ€๋ณ€์„ฑ์œผ๋กœ ์ธํ•ด user ๊ฐ์ฒด๋ฅผ ๋ณต์‚ฌํ•œ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ณ€ํ•ด๋„ ๊ธฐ์กด์˜ user ๊ฐ์ฒด๊นŒ์ง€ ํ•จ๊ป˜ ๋ณ€ํ•ด๋ฒ„๋ ค ๊ทธ ๋ณ€๊ฒฝ ์—ฌ๋ถ€๋ฅผ ๊ฐ์ง€ํ•  ์ˆ˜๊ฐ€ ์—†์–ด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1: ์•„์˜ˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ

var changeName = (user, newName) => {
  return {
    name: newName,
    gender: user.gender,
  };
};

var user2 = changeName(user, "syongsyong");

์ด๋•Œ๊ธฐ์กด์˜ user ๊ฐ์ฒด๋ฅผ ๋ถˆ๋ณ€ ๊ฐ์ฒด๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๊ฐ์ฒด์˜ ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•  ๋•Œ ๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ๋งŒ์„ ์ˆ˜์ •ํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ์•„์˜ˆ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
๋‹ค๋งŒ, ์ด๋Š” ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ธฐ์กด ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ(gender)๊นŒ์ง€ ํ•˜๋“œ์ฝ”๋”ฉ์œผ๋กœ ์ž…๋ ฅํ•ด ๋น„ํšจ์œจ์ ์ด๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 2: ์–•์€ ๋ณต์‚ฌ

var copyObject = (target) => {
  var result = {};
  for (var prop in target) {
    result[prop] = target[prop];
  }
  return result;
};

var user2 = copyObject(user);
user2.name = "syongsyong";

ํ•˜๋“œ์ฝ”๋”ฉ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–•์€ ๋ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ์ด๋Š” ๋ง ๊ทธ๋Œ€๋กœ ์–•์€ ๋ณต์‚ฌ๋ผ๋Š” ์ ์—์„œ ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.

(2) ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ

์–•์€ ๋ณต์‚ฌ๋Š” ๋ฐ”๋กœ ์•„๋ž˜ ๋‹จ๊ณ„์˜ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๊ณ , ๊นŠ์€ ๋ณต์‚ฌ๋Š” ๋‚ด๋ถ€์˜ ๋ชจ๋“  ๊ฐ’๋“ค์„ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฐพ์•„์„œ ์ „๋ถ€ ๋ณต์‚ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์–•์€ ๋ณต์‚ฌ์˜ ๋ฌธ์ œ์  (์ค‘์ฒฉ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ)

var user = {
  name: "syong",
  urls: {
    portfolio: "http://github.com/abc",
    blog: "http://blog.com",
    facebook: "http://facebook.com/abc",
  };
};

var user2 = copyObject(user);

user2.name = "syongsyong";
console.log(user.name === user2.name); // false

user2.urls.blog = "";
console.log(user.urls.blog === user2.urls.blog); // true

์ด์ฒ˜๋Ÿผ user ๊ฐ์ฒด์— ์ง์ ‘ ์†ํ•œ ํ”„๋กœํผํ‹ฐ์ธ name์— ๋Œ€ํ•ด์„œ๋Š” ๋ณต์‚ฌํ•ด์„œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŒ๋“ค์–ด์ง„ ๋ฐ˜๋ฉด, ํ•œ ๋‹จ๊ณ„ ๋” ๋“ค์–ด๊ฐ€์„œ ๊ฐ์ฒด์˜ ๋˜ ๋‹ค๋ฅธ ํ”„๋กœํผํ‹ฐ์ธ urls์˜ '๋‚ด๋ถ€ ํ”„๋กœํผํ‹ฐ'๋“ค์€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ๊ทธ๋Œ€๋กœ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์ค‘์ ‘ ๊ฐ์ฒด์— ๋Œ€ํ•œ ๊นŠ์€ ๋ณต์‚ฌ

var user2 = copyObject(user);
var user2.urls = copyObject(user.urls); // ์ถ”๊ฐ€ โ—

user2.name = "syongsyong";
console.log(user.name === user2.name); // false

user2.urls.blog = "";
console.log(user.urls.blog === user2.urls.blog); // false

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

๊ฐ์ฒด์˜ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฒ”์šฉ ํ•จ์ˆ˜

var copyObjectDeep = (target) => {
  var result = {};
  if (typeof target === "object" && target !== null) {
    for (var prop in target) {
      result[prop] = copyObjectDeep(target[prop]);
    }
  } else {
    result = target;
  }
  return result;
};

var user2 = copyObjectDeep(user);

JSON์„ ํ™œ์šฉํ•œ ๊ฐ„๋‹จํ•œ ๊นŠ์€ ๋ณต์‚ฌ

var copyObjectViaJSON = (target) => JSON.parse(JSON.stringify(target));

var user2 = copyObjectViaJSON(user);

JSON ๋ฌธ๋ฒ•์„ ์ด์šฉํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
๋‹ค๋งŒ, ์ด๋Š” __proto__๋‚˜ getter/setter ๋“ฑ๊ณผ ๊ฐ™์ด JSON์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ํ”„๋กœํผํ‹ฐ๋“ค์€ ๋ณต์‚ฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ํ•œ๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค.


6) undefined์™€ null

(1) undefined

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์ด ์ž๋™์œผ๋กœ undefined๋ฅผ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ

  • ๊ฐ’์„ ๋Œ€์ž…ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜, ์ฆ‰ ๋ฐ์ดํ„ฐ ์˜์—ญ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์€ ์‹๋ณ„์ž์— ์ ‘๊ทผํ•  ๋•Œ
  • ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๋•Œ
  • return ๋ฌธ์ด ์—†๊ฑฐ๋‚˜ ํ˜ธ์ถœ๋˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ

๊ฐ’์„ ๋Œ€์ž…ํ•˜์ง€ ์•Š์€ ๋ฐฐ์—ด

๋ฐฐ์—ด์—์„œ ๋น„์–ด์žˆ๋Š” ์š”์†Œ์™€ 'undefined'๋ผ๋„ ํ• ๋‹นํ•œ ์š”์†Œ๋Š” ์ถœ๋ ฅ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค๋ฅด๋‹ค.
๋น„์–ด์žˆ๋Š” ์š”์†Œ๋Š” forEach, map, filter, reduce ๋“ฑ ์ˆœํšŒ์™€ ๊ด€๋ จ๋œ ๋งŽ์€ ๋ฐฐ์—ด ๋ฉ”์„œ๋“œ๋“ค์˜ ์ˆœํšŒ ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋œ๋‹ค.
๊ฐ’์ด ์ง€์ •๋˜์ง€ ์•Š์€ ์ธ๋ฑ์Šค๋Š” ์•„์ง ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ์ง€๋‚˜์ง€ ์•Š๊ณ , ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด์„œ๋Š” ๋‹น์—ฐํžˆ ์ˆœํšŒํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค.

(2) null

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

๋‹ค๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž์ฒด ๋ฒ„๊ทธ๋กœ ์ธํ•ด typeof null์€ object์ด๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ๋ณ€์ˆ˜์˜ ๊ฐ’์ด null์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ํŒ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ผ์น˜ ์—ฐ์‚ฐ์ž(===)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋™๋“ฑ ์—ฐ์‚ฐ์ž(==) x

var n === null;

console.log(n == undefined); // true
console.log(n == null); // true

console.log(n === undefined); // false
console.log(n === null); // true โ—

โœจ ๋‚ด์ผ ํ•  ๊ฒƒ

  1. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ / this
profile
๋Šฅ๋™์ ์œผ๋กœ ์‚ด์ž, ํ–‰๋ณตํ•˜๊ฒŒ๐Ÿ˜

0๊ฐœ์˜ ๋Œ“๊ธ€