javascript ํ‘œํ˜„์‹๊ณผ ์—ฐ์‚ฐ์ž

ํ‘œํ˜„์‹ (expression)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€ํ•˜๋Š”(evaluate) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ตฌ๋ฌธ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ”„๋กœ๊ทธ๋žจ์— ํฌํ•จ๋œ ์ž„์˜์˜ ์ƒ์ˆ˜๋Š” ํ‘œํ˜„์‹์˜ ์•„์ฃผ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ๋‹ค. ๋ณ€์ˆ˜ ์ด๋ฆ„ ๋˜ํ•œ ๊ฐ„๋‹จํ•œ ํ‘œํ˜„์‹์œผ๋กœ, ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ์ž„์˜์˜ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ์ด์ฒ˜๋Ÿผ ๊ฐ„๋‹จํ•œ ํ‘œํ˜„์‹๋“ค์„ ์‚ฌ์šฉํ•ด ๋ณต์žกํ•œ ํ‘œํ˜„์‹๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋ฐฐ์—ด ์ ‘๊ทผ ํ‘œํ˜„์‹์€ ์—ด๋ฆฐ ๋Œ€๊ด„ํ˜ธ([) ์™€ ์ˆซ์ž๋กœ ํ‰๊ฐ€๋˜๋Š” ํ‘œํ˜„์‹, ๋‹ซํžŒ ๋Œ€๊ด„ํ˜ธ(])๊ฐ€ ๊ฒฐํ•ฉ๋œ ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์ด๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฒฐํ•ฉ๋œ ๋ณต์žก ํ‘œํ˜„์‹์€ ๋ฐฐ์—ด์˜ ํŠน์ • ์œ„์น˜์— ์ €์žฅ๋œ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ์ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ, ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ‘œํ˜„์‹์€ ํ•จ์ˆ˜ ๊ฐ์ฒด์™€ ์ธ์ž๋กœ ์‚ฌ์šฉ๋˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํ‘œํ˜„์‹๋“ค์ด ๊ฒฐํ•ฉํ•ด ํ•˜๋‚˜์˜ ๋ณตํ•ฉ ํ‘œํ˜„์‹์ด ๋œ๋‹ค.

๋ณตํ•ฉ ํ‘œํ˜„์‹์„ ๋งŒ๋“œ๋Š” ๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์€ ์—ฐ์‚ฐ์ž(operator)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’๋“ค์„(๋ณดํ†ต ๋‘ ๊ฐœ) ์–ด๋–ป๊ฒŒ๋“  ๊ฒฐํ•ฉํ•ด ์ƒˆ๋กœ์šด ๊ฐ’์„ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค. ๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž _๊ฐ€ ๊ทธ ๊ฐ„๋‹จํ•œ ์‚ฌ๋ก€๋‹ค. ํ‘œํ˜„์‹ x _ y๋Š” ํ‘œํ˜„์‹ x์™€ y ๊ฐ’์˜ ๊ณฑ์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ์—ฐ์‚ฐ์ž๋Š” '๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค'๋Š” ํ‘œํ˜„ ๋Œ€์‹ , '๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค'๋Š” ํ‘œํ˜„์„ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค.

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

4.1 ๊ธฐ๋ณธ ํ‘œํ˜„์‹ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ˜•ํƒœ์˜ ํ‘œํ˜„์‹์€ '๊ธฐ๋ณธ ํ‘œํ˜„์‹(primary expression)'์œผ๋กœ, ๋‹ค๋ฅธ ํ‘œํ˜„์‹์„ ํฌํ•จํ•˜์ง€ ์•Š์€ ๋…๋ฆฝ์  ํ‘œํ˜„์‹์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ธฐ๋ณธ ํ‘œํ˜„์‹์€ ์ƒ์ˆ˜๋‚˜ ๋ฆฌํ„ฐ๋Ÿด ๊ฐ’, ํŠน์ • ํ‚ค์›Œ๋“œ๋“ค ๊ทธ๋ฆฌ๊ณ  ๋ณ€์ˆ˜ ์ฐธ์กฐ๋ฅผ ๋งํ•œ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด์€ ์ƒ์ˆ˜ ๊ฐ’์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์— ์ง์ ‘ ํฌํ•จ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1.234 // ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด "hello" // ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด /pattern/ // ์ •๊ทœ ํ‘œํ˜„์‹ ๋ฆฌํ„ฐ๋Ÿด

์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด์„ ์ž‘์„ฑํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ•์€ 3.1์ ˆ์—์„œ, ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ 3.2์ ˆ์—์„œ ๋‹ค๋ค˜๋‹ค. ์ •๊ทœ ํ‘œํ˜„์‹ ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ๋ฒ•๋„ 3.2.4์—์„œ ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ–ˆ์ง€๋งŒ 10์žฅ์—์„œ ์ข€ ๋” ์ž์„ธํžˆ ๋‹ค๋ฃฌ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์˜ˆ์•ฝ์–ด ์ค‘์—๋Š” ๊ธฐ๋ณธ ํ‘œํ˜„์‹์ด ๋ช‡ ๊ฐœ ์žˆ๋‹ค.

true // ๋ถˆ๋ฆฌ์–ธ true ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. false // ๋ถˆ๋ฆฌ์–ธ false ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. null // null ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. this // 'ํ˜„์žฌ' ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋œ๋‹ค.

3.3์ ˆ๊ณผ 3.4์ ˆ์—์„œ true, false, null์— ๋Œ€ํ•ด ์‚ดํŽด๋ดค๋‹ค. ๋‹ค๋ฅธ ํ‚ค์›Œ๋“œ์™€๋Š” ๋‹ฌ๋ฆฌ this๋Š” ์ƒ์ˆ˜๊ฐ€ ์•„๋‹ˆ๊ณ  ํ”„๋กœ๊ทธ๋žจ ์•ˆ์—์„œ ์œ„์น˜์— ๋”ฐ๋ผ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. this ํ‚ค์›Œ๋“œ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ๋ฉ”์„œ๋“œ์˜ ๋ณธ๋ฌธ ์•ˆ์—์„œ this๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•œ ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋œ๋‹ค. 4.5์ ˆ๊ณผ 8์žฅ(ํŠนํžˆ 8.2.2), 9์žฅ์—์„œ this์— ๋Œ€ํ•ด ์ข€ ๋” ์ƒ์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์„ธ ๋ฒˆ์งธ ๊ธฐ๋ณธ ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜๋ฅผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ฐธ์กฐํ•˜๋Š” ํ˜•ํƒœ๋‹ค.

i // ๋ณ€์ˆ˜ i์˜ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. sum // ๋ณ€์ˆ˜ sum์˜ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. undefined // undefined๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋กœ null์ฒ˜๋Ÿผ ํ‚ค์›Œ๋“œ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— ์กด์žฌํ•˜๋Š” ๊ฐ ์‹๋ณ„์ž๋“ค์„ ์ผ๋‹จ ๋ณ€์ˆ˜๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๊ฐ’์„ ์‚ดํŽด๋ณธ๋‹ค. ๋งŒ์•ฝ ํ•ด๋‹น ์‹๋ณ„์ž๋ฅผ ์ด๋ฆ„์œผ๋กœ ํ•˜๋Š” ๋ณ€์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด, ํ•ด๋‹น ํ‘œํ˜„์‹์€ undefined ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ํ•˜์ง€๋งŒ ECMAScript 5์˜ ์—„๊ฒฉ ๋ชจ๋“œ (strict mode)์—์„œ๋Š” ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ณ€์ˆ˜๋ฅผ ํ‰๊ฐ€ํ•˜๋ ค๊ณ  ํ•˜๋ฉด ReferenceError ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

4.2 ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์˜ ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹

๊ฐ์ฒด์™€ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹(initializer)์€ ๋ง ๊ทธ๋Œ€๋กœ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ๊ฐ’์œผ๋กœ ํ•˜๋Š” ํ‘œํ˜„์‹์ด๋‹ค. ์ด๋“ค ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์€ ์ข…์ข… '๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด'๊ณผ '๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด' ์ด๋ผ๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜ ๋ฆฌํ„ฐ๋Ÿด๊ณผ๋Š” ๋‹ฌ๋ฆฌ, ์ด๋“ค์€ ๊ธฐ๋ณธ ํ‘œํ˜„์‹์ด ์•„๋‹ˆ๋‹ค. ์ด๋“ค ๋ฆฌํ„ฐ๋Ÿด์€ ํ”„๋กœํผํ‹ฐ์™€ ์›์†Œ์˜ ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ์ˆ˜๋งŽ์€ ํ•˜์œ„ ํ‘œํ˜„์‹์„ ํฌํ•จํ• ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ๋ฌธ๋ฒ•์€ ์ƒ๋Œ€์ ์œผ๋กœ ๊ฐ„๋‹จํ•˜๋‹ˆ, ์ด ๋ถ€๋ถ„๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž. ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์€ ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ๋‹ด๊ธด ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ‘œํ˜„์‹ ๋ฆฌ์ŠคํŠธ๋‹ค. ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์˜ ๊ฐ’์€ ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์ด๋‹ค. ์ด๋ ‡๊ฒŒ ์ƒ์„ฑ๋œ ๋ฐฐ์—ด์˜ ์›์†Œ๋“ค์€ ๊ฐ๊ฐ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ํ‘œํ˜„์‹์˜ ๊ฐ’๋“ค๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค.

[] // ๋นˆ ๋ฐฐ์—ด: ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ํ‘œํ˜„์‹์ด ์—†์œผ๋ฉด ์›์†Œ๊ฐ€ ์—†์Œ์„ ๋ง ํ•œ๋‹ค. [1+2, 3+4] // ๋‘ ๊ฐœ์˜ ์›์†Œ๋ฅผ ๊ฐ€์ง„ ๋ฐฐ์—ด. ์ฒซ ๋ฒˆ์งธ๋Š” 3, ๋‘ ๋ฒˆ์งธ๋Š” 7์ด๋‹ค.

๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์— ์‚ฌ์šฉ๋˜๋Š” ์›์†Œ ํ‘œํ˜„์‹์œผ๋กœ๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์›์†Œ ํ‘œํ˜„์‹ ์ž์ฒด๊ฐ€ ๋ฐฐ์—ด์ด๋ผ๋ฉด ์ค‘์ฒฉ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ค.

var matrix = [[1,2,3], [4,5,6], [7,8,9]];

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

var sparseArray = [1,,,,,,5];

๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ ํ‘œํ˜„์‹ ๋‹ค์Œ์— ์‰ผํ‘œ๊ฐ€ ์˜ฌ ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ๊ทธ๋ ‡๋‹ค๊ณ  ํ•ด์„œ ๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์€ ์›์†Œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€์ง€๋Š” ์•Š๋Š”๋‹ค. ๊ฐ์ฒด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์€ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์•„๋‹Œ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ , ๊ฐ ํ•˜์œ„ ํ‘œํ˜„์‹ ์•ž์—๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„๊ณผ ์ฝœ๋ก (:)์ด ๋ถ™๋Š”๋‹ค.

var p = { x : 2.3, y : -1.2 }; // ๋‘ ๊ฐœ์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด var q = {}; // ํ”„๋กœํผํ‹ฐ๊ฐ€ ์—†๋Š” ๋นˆ ๊ฐ์ฒด q.x = 2.3; q.y = -1.2; // ๊ฐ์ฒด q์™€ p๋Š” ๊ฐ™์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๋Š”๋‹ค.

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€ ์ค‘์ฒฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ํ†ตํ•ด ์‚ดํŽด๋ณด์ž.

var rectangle = { upperLeft : { x : 2, y : 2 }, lowerRight : { x : 4, y : 5 } } ;

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

var side = 1; var square = { "upperLeft" : { x : p.x, y : p.y }, "lowerRight" : { x : p.x + side, y : p.y + side } } ;

๊ฐ์ฒด์™€ ๋ฐฐ์—ด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์€ 6์žฅ๊ณผ 7์žฅ์—์„œ ์ข€ ๋” ์ƒ์„ธํžˆ ๋‹ค๋ฃฌ๋‹ค.

4.3 ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹

ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹ ( function definition expression)์€ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ , ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹์˜ ๊ฐ’์€ ์ƒˆ๋กœ ์ •์˜๋œ ํ•จ์ˆ˜๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹์€ 'ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด'์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ๊ฐ์ฒด ์ดˆ๊ธฐํ™” ํ‘œํ˜„์‹์„ '๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด' ์ด๋ผ๊ณ  ๋งํ•˜๋Š”๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹์€ ์ผ๋ฐ˜์ ์œผ๋กœ function ํ‚ค์›Œ๋“œ์™€ ์ค‘๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์‹๋ณ„์ž(๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„) ๋ชฉ๋ก, ์ค‘๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์ธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ(ํ•จ์ˆ˜ ๋ชธ์ฒด)๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์˜ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด์ž.

// ์ด ํ•จ์ˆ˜๋Š” ์ „๋‹ฌ๋œ ๊ฐ’์„ ์ œ๊ณฑํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•œ๋‹ค. var square = function(x) { return x * x; }

ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹์€ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์ •์˜ ํ‘œํ˜„์‹ ๋Œ€์‹ ์— ํ•จ์ˆ˜ ๊ตฌ๋ฌธ(function statement)์„ ์‚ฌ์šฉํ•ด ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•จ์ˆ˜ ์ •์˜์— ๋Œ€ํ•ด์„œ๋Š” 8์žฅ์—์„œ ์ข€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณผ ๊ฒƒ์ด๋‹ค.

4.4 ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹

ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹์€ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฐฐ์—ด์˜ ์›์†Œ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฌธ๋ฒ•์œผ๋กœ ํ”„๋กœํผํ‹ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ‘œํ˜„์‹ . ์‹๋ณ„์ž ํ‘œํ˜„์‹ [ ํ‘œํ˜„์‹ ]

์ฒซ ๋ฒˆ์งธ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ ํ‘œํ˜„์‹์— ์‹๋ณ„์ž๋ฅผ ์ (.)์œผ๋กœ ์—ฐ๊ฒฐํ•œ ํ‘œํ˜„์‹์ด๋‹ค. ์—ฌ๊ธฐ์„œ ํ‘œํ˜„์‹์€ ๊ฐ์ฒด๋ฅผ ๋งํ•˜๊ณ , ์‹๋ณ„์ž๋Š” ์•ž์—์„œ ์ง€์ •ํ•œ ๊ฐ์ฒด์—์„œ ์ฐพ์„ ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์„ ์˜๋ฏธํ•œ๋‹ค. ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ์˜ ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์ด ๋˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ‘œํ˜„์‹ ๋‹ค์Œ์— ์—ด๋ฆฐ ๋Œ€๊ด„ํ˜ธ์™€ ๋‘ ๋ฒˆ์งธ ํ‘œํ˜„์‹ ๊ทธ๋ฆฌ๊ณ  ๋‹ซํžŒ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ์‚ฌ์šฉํ•œ ๋‘ ๋ฒˆ์งธ ํ‘œํ˜„์‹์€ ๊ฐ์ฒด์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด๋‚˜ ๋ฐฐ์—ด ๋‚ด ์›์†Œ์˜ ์ธ๋ฑ์Šค ๊ฐ’์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด์ž.

var o = { x : 1, y : { z : 3 } }; // ๊ฐ„๋‹จํ•œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์˜ˆ์ œ var a = [o,4, [5,6]]; // ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•œ ๊ฐ„๋‹จํ•œ ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด ์˜ˆ์ œ o.x // 1: ํ‘œํ˜„์‹ o์˜ ํ”„๋กœํผํ‹ฐ x์˜ ๊ฐ’ o.y.z // 3: ํ‘œํ˜„์‹ o.y์˜ ํ”„๋กœํผํ‹ฐ z์˜ ๊ฐ’ o["x"] // 1: ๊ฐ์ฒด o์˜ ํ”„๋กœํผํ‹ฐ x์˜ ๊ฐ’ a[1] // 4: ํ‘œํ˜„์‹ a์˜ ์ธ๋ฑ์Šค 1 ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ ๊ฐ’ a[2]["1"] // 6: ํ‘œํ˜„์‹ a[2]์˜ ์ธ๋ฑ์Šค 1 ์œ„์น˜์— ์žˆ๋Š” ์›์†Œ ๊ฐ’ a[0].x // 1: ํ‘œํ˜„์‹ a[0]์˜ ํ”„๋กœํผํ‹ฐ x์˜ ๊ฐ’

๋‘ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹ ๋ชจ๋‘ ์ (.)์ด๋‚˜ ๋Œ€๊ด„ํ˜ธ ([) ์™ผ์ชฝ ํ‘œํ˜„์‹์ด ๋จผ์ € ํ‰๊ฐ€๋œ๋‹ค. ๋งŒ์•ฝ ํ‰๊ฐ€๋œ ๊ฐ’์ด null ์ด๋‚˜ undefined์ด๋ฉด ์ด๋“ค ๊ฐ’์€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ‘œํ˜„์‹์€ TypeError ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค. ๋งŒ์•ฝ ๊ฐ’์ด ๊ฐ์ฒด(๋˜๋Š” ๋ฐฐ์—ด)๊ฐ€ ์•„๋‹ˆ๋ฉด ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜๋œ๋‹ค(3.6์ ˆ ์ฐธ๊ณ ). ๋งŒ์•ฝ ๊ฐ์ฒด ํ‘œํ˜„์‹ ๋‹ค์Œ์— ์ (.)๊ณผ ์‹๋ณ„์ž๊ฐ€ ์˜ฌ ๊ฒฝ์šฐ์—๋Š” ์‹๋ณ„์ž๋ฅผ ์ด๋ฆ„์œผ๋กœ ๊ฐ–๋Š” ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์„ ์ฐพ๊ฒŒ ๋˜๊ณ , ์ด ๊ฐ’์ด ์ „์ฒด ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ๋œ๋‹ค. ๋งŒ์•ฝ ๊ฐ์ฒด ํ‘œํ˜„์‹ ๋‹ค์Œ์— ๋‘ ๋ฒˆ์งธ ํ‘œํ˜„์‹์ด ๋‹ด๊ธด ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์˜ฌ ๊ฒฝ์šฐ์—๋Š” ๋‘ ๋ฒˆ์งธ ํ‘œํ˜„์‹์ด ํ‰๊ฐ€๋˜๊ณ , ์ด ๊ฐ’์ด ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์ „์ฒด ํ‘œํ˜„์‹์˜ ๊ฐ’์€ ์•ž์—์„œ ๋ณ€ํ™˜๋œ ๋ฌธ์ž์—ด์„ ์ด๋ฆ„์œผ๋กœ ๊ฐ–๋Š” ํ”„๋กœํผํ‹ฐ์˜ ๊ฐ’์ด ๋œ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘, ๊ฐ์ฒด์— ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด, ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹์˜ ๊ฐ’์€ undefined๊ฐ€ ๋œ๋‹ค.

'. ์‹๋ณ„์ž' ๋ฌธ๋ฒ•์ด ๋‘ ๋ฐฉ๋ฒ• ์ค‘ ์ข€ ๋” ๊ฐ„๋‹จํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ ‘๊ทผํ•˜๋ ค๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด 'ํ•ฉ๋ฒ•์ ' ์‹๋ณ„์ž์ผ ๋•Œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ๊ทธ ์‹๋ณ„์ž๋ฅผ ๋ฏธ๋ฆฌ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ์˜ˆ์•ฝ์–ด์ด๊ฑฐ๋‚˜, ๊ตฌ๋‘์  ๋ฌธ์ž๋‚˜ ๊ณต๋ฐฑ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ฑฐ๋‚˜, ์ˆซ์ž(๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ)์ผ ๋•Œ๋Š” ๋ฐ˜๋“œ์‹œ ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค. ๋Œ€๊ด„ํ˜ธ๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ๊ณ ์ •๋˜์–ด ์žˆ์ง€ ์•Š๊ณ , ๊ทธ ์ด๋ฆ„ ์ž์ฒด๊ฐ€ ์–ด๋–ค ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ์ธ ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ( 6.2.1์—์„œ ๋‹ค๋ฃฌ ์˜ˆ์ œ ์ฐธ๊ณ ). ๊ฐ์ฒด์™€ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ์— ๋Œ€ํ•ด์„œ๋Š” 6์žฅ์—์„œ, ๋ฐฐ์—ด๊ณผ ๋ฐฐ์—ด์˜ ์›์†Œ์— ๋Œ€ํ•ด์„œ๋Š” 7์žฅ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃฌ๋‹ค.

4.5 ํ˜ธ์ถœ ํ‘œํ˜„์‹

ํ˜ธ์ถœ ํ‘œํ˜„์‹(invocation expression)์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ•จ์ˆ˜๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š”(๋˜๋Š” ์‹คํ–‰์‹œํ‚ค๋Š”) ๋ฌธ๋ฒ•์ด๊ณ , ํ˜ธ์ถœ๋  ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ•จ์ˆ˜ ํ‘œํ˜„์‹์œผ๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ ๋’ค์—๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ๋กœ ์‹œ์ž‘ํ•ด ์‰ผํ‘œ(,)๋กœ ๊ตฌ๋ถ„๋œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ˜ธ์ถœ ์ธ์ž ๋ชฉ๋ก์ด ์˜ฌ ์ˆ˜ ์žˆ๊ณ , ๋‹ซ๋Š” ๊ด„ํ˜ธ๋กœ ๋๋‚œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

f(0) // f๋Š” ํ•จ์ˆ˜ ํ‘œํ˜„์‹์ด๋‹ค. ์—ฌ๊ธฐ์„œ '0'์€ ์ธ์ž ํ‘œํ˜„์‹์ด๋‹ค. Math.max(x,y,z) // Math.max๋Š” ํ•จ์ˆ˜๊ณ , x,y,z๊ฐ€ ํ˜ธ์ถœ ์ธ์ž๋‹ค. a.sort() // a.sort๋Š” ํ•จ์ˆ˜๊ณ , ํ˜ธ์ถœ ์ธ์ž๊ฐ€ ์—†๋‹ค.

ํ˜ธ์ถœ ํ‘œํ˜„์‹์ด ํ‰๊ฐ€๋  ๋•Œ ํ•จ์ˆ˜ ํ‘œํ˜„์‹์ด ๊ฐ€์žฅ ๋จผ์ € ํ‰๊ฐ€๋˜๊ณ , ๊ทธ ํ›„์— ํ˜ธ์ถœ ์ธ์ž ํ‘œํ˜„์‹์ด ์ˆœ์„œ๋Œ€๋กœ ์ธ์ž ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค. ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ๋Š” TypeError ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค(๋ชจ๋“  ํ•จ์ˆ˜๋Š” ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•จ์ˆ˜๊ฐ€ ์•„๋‹Œ ํ˜ธ์ŠคํŠธ ๊ฐ์ฒด๋„ ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ๊ทธ ์ฐจ์ด์ ์€ 8.7.7์—์„œ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•œ๋‹ค). ์ธ์ž ๊ฐ’์ด ํ‰๊ฐ€๋œ ๋‹ค์Œ์—๋Š” ํ•จ์ˆ˜ ์„ ์–ธ ์‹œ ์ง€์ •ํ–ˆ๋˜ ์ธ์ž ์ด๋ฆ„์— ์ธ์ž ๊ฐ’์ด ์ฐจ๋ก€๋กœ ํ• ๋‹น๋˜๊ณ , ๋งˆ์ง€๋ง‰์œผ๋กœ ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ์ด ์‹คํ–‰๋œ๋‹ค. ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด return๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด, ๊ทธ ๊ฐ’์ด ๊ฒฐ๊ตญ ํ˜ธ์ถœ ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ๋œ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ํ•จ์ˆ˜ ํ‘œํ˜„์‹์˜ ๊ฐ’์€ undefined๊ฐ€ ๋œ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ด€๋ จํ•œ ์ข€ ๋” ์ž์„ธํ•œ ์‚ฌํ•ญ์€ 8์žฅ์—์„œ ์‚ดํŽด๋ณด๊ธฐ๋กœ ํ•˜์ž.

๋ชจ๋“  ํ˜ธ์ถœ ํ‘œํ˜„์‹์€ ํ•œ ์Œ์˜ ๊ด„ํ˜ธ () ์™€, ๊ด„ํ˜ธ ์•ž์— ์˜ค๋Š” ํ‘œํ˜„์‹์œผ๋กœ ์ด๋ค„์ง„๋‹ค. ๋งŒ์•ฝ ๊ทธ ํ‘œํ˜„์‹์ด ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹์ด๋ฉด, ํ˜ธ์ถœ ํ‘œํ˜„์‹์€ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด ๋œ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด ํ•จ์ˆ˜์˜ ๋ชธ์ฒด๊ฐ€ ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ ํ‘œํ˜„์‹์ด ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์ด ๋ชจ๋‘ this์˜ ๊ฐ’์ด ๋œ๋‹ค. ์ด๋Š” ํ•จ์ˆ˜(๊ฐ์ฒด ์ง€ํ–ฅ์—์„œ๋Š” '๋ฉ”์„œ๋“œ'๋กœ ์•Œ๋ ค์ง„)๊ฐ€ ์ž์‹ ์ด ์†ํ•œ ๊ฐ์ฒด๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๋™์ž‘ํ•˜๊ฒŒ ํ•˜๋ฏ€๋กœ ๊ฐ์ฒด ์ง€ํ–ฅ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด์™€ ๊ด€๋ จํ•ด์„œ๋Š” 9์žฅ์—์„œ ์ข€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด ์•„๋‹Œ ํ˜ธ์ถœ ํ‘œํ˜„์‹์€ ๋ณดํ†ต ์ „์—ญ ๊ฐ์ฒด๋ฅผ this ํ‚ค์›Œ๋“œ์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค. ํ•˜์ง€๋งŒ ECMAScript 5์—์„œ๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์ด ์•„๋‹Œ ํ˜ธ์ถœ ํ‘œํ˜„์‹์„ '์—„๊ฒฉ ๋ชจ๋“œ'์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ „์—ญ ๊ฐ์ฒด ๋Œ€์‹  undefined๊ฐ€ this์˜ ๊ฐ’์ด ๋œ๋‹ค. 5.7.3์—์„œ '์—„๊ฒฉ ๋ชจ๋“œ'์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

4.6 ๊ฐ์ฒด ์ƒ์„ฑ ํ‘œํ˜„์‹

๊ฐ์ฒด ์ƒ์„ฑ ํ‘œํ˜„์‹(object creation expression)์€ ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ƒ์„ฑ์ž๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ๊ฐ์ฒด์— ์†ํ•œ ํ”„๋กœํผํ‹ฐ๋“ค์„ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค. ๊ฐ์ฒด ์ƒ์„ฑ ํ‘œํ˜„์‹์€ new ํ‚ค์›Œ๋“œ๊ฐ€ ์•ž์— ๋ถ™๋Š”๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด ํ˜ธ์ถœ ํ‘œํ˜„์‹๊ณผ ์œ ์‚ฌํ•˜๋‹ค.

new Object() new Point(2,3)

๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌ์ธ์ž ์—†์ด ํ˜ธ์ถœํ•  ๋•Œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ด„ํ˜ธ๋ฅผ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ๋‹ค.

new Object new Darte

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

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

4.7 ์—ฐ์‚ฐ์ž ๊ฐœ์š”

์—ฐ์‚ฐ์ž๋Š” ์ˆ˜์‹ ํ‘œํ˜„์‹, ๋น„๊ต ํ‘œํ˜„์‹, ๋…ผ๋ฆฌ ํ‘œํ˜„์‹, ํ• ๋‹น ํ‘œํ˜„์‹ ๋“ฑ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋‹ค์–‘ํ•˜๊ฒŒ ์“ฐ์ธ๋‹ค. ํ‘œ 4-1์—์„œ๋Š” ๊ฐ ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋Š” ์—ญํ• ์„ ์š”์•ฝํ•˜๊ณ  ์šฐ์„ ์ˆœ์œ„์ˆœ์œผ๋กœ ๋‚˜์—ดํ•˜์˜€๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์—ฐ์‚ฐ์ž๊ฐ€ +์™€ = ๊ฐ™์€ ๋ถ€ํ˜ธ๋กœ ํ‘œํ˜„๋˜์ง€๋งŒ, ์ผ๋ถ€๋Š” delete์™€ instanceof์™€ ๊ฐ™์ด ํ‚ค์›Œ๋“œ๋กœ ํ‘œํ˜„ํ•œ๋‹ค. ํ‚ค์›Œ๋“œ ์—ฐ์‚ฐ์ž๋“ค๋„ ๋ฌธ์žฅ ๋ถ€ํ˜ธ ์—ฐ์‚ฐ์ž๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ •๊ทœ ์—ฐ์‚ฐ์ž์ธ๋ฐ, ๋ฌธ์žฅ ๋ถ€ํ˜ธ ์—ฐ์‚ฐ์ž์™€ ๋น„๊ตํ•ด ๋œ ๊ฐ„๊ฒฐํ•œ ํ˜•ํƒœ๋กœ ํ‘œํ˜„๋œ ๊ฒƒ๋ฟ์ด๋‹ค.

ํ‘œ 4-1์€ ์—ฐ์‚ฐ์ž๋ฅผ ์—ฐ์‚ฐ ์šฐ์„ ์ˆœ์œ„๋กœ ์ •๋ ฌํ–ˆ๋‹ค. ๋ชฉ๋ก์— ๋‚˜์—ด๋œ ์—ฐ์‚ฐ์ž ์ค‘์—์„œ ๋จผ์ € ๋‚˜์˜จ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‚˜์ค‘ ๋‚˜์˜จ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์—ฐ์‚ฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ์ด์ฒ˜๋Ÿผ, ์—ฐ์‚ฐ์ž๋Š” ์šฐ์„ ์ˆœ์œ„ ๋‹จ๊ณ„์— ๋”ฐ๋ผ ์„ ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค. ํ‘œ์—์„œ '๊ฒฐํ•ฉ ๋ฐฉํ–ฅ' ์—ด์€ ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ด๋Š”๋ฐ , L์€ '์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ'๋ฅผ ์˜๋ฏธํ•˜๊ณ  R์€ '์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ'๋ฅผ ๋œปํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  'ํ”ผ์—ฐ์‚ฐ์ž ๊ฐœ์ˆ˜' ์—ด์€ ํ•ด๋‹น ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ–๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋œปํ•œ๋‹ค. 'ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…' ์—ด์€ ์—ฐ์‚ฐ์ž๊ฐ€ ์‚ฌ์šฉํ•  ํ”ผ์—ฐ์‚ฐ์ž๋“ค์˜ ํƒ€์ž…์„, '๋ฐ˜ํ™˜' ์—ด์€ ์—ฐ์‚ฐ์ž๊ฐ€ ํ‰๊ฐ€๋œ ํ›„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฐ์ฒด ํƒ€์ž…์„ ๋งํ•œ๋‹ค. ์ด์–ด์ง€๋Š” ์ ˆ์—์„œ๋Š” ํ‘œ 4-1์— ๋‚˜์™€ ์žˆ๋Š” ์—ฐ์‚ฐ์ž๋“ค์˜ ์—ฐ์‚ฐ ์šฐ์„ ์ˆœ์œ„์™€ ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ ๊ทธ๋ฆฌ๊ณ  ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…์— ๋Œ€ํ•ด ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ์—ฐ์‚ฐ์ž ์ž์ฒด์— ๋Œ€ํ•ด์„œ๋„ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

                       ํ‘œ 4-1 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—ฐ์‚ฐ์ž

4.7.1 ํ”ผ ์—ฐ์‚ฐ์ž ๊ฐœ์ˆ˜

์—ฐ์‚ฐ์ž์— ํ•„์š”ํ•œ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์ž๋“ค์„ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž * ์ฒ˜๋Ÿผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—ฐ์‚ฐ์ž ๋Œ€๋ถ€๋ถ„์€ 2ํ•ญ ์—ฐ์‚ฐ์ž(binary operator)๋‹ค. 2ํ•ญ ์—ฐ์‚ฐ์ž๋Š” ๋‘ ๊ฐœ์˜ ํ‘œํ˜„์‹์„ ์กฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ณตํ•ฉ ํ‘œํ˜„์‹์œผ๋กœ ๋งŒ๋“ค์–ด๋‚ธ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž(unary operator)๋„ ์ง€์›ํ•œ๋‹ค. ์ด๋Ÿฐ ์—ฐ์‚ฐ์ž๋Š” ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์„ ์ข€ ๋” ๋ณต์žกํ•œ ๋‹จ์ผ ํ‘œํ˜„์‹์œผ๋กœ ๋ฐ”๊พผ๋‹ค. ๊ฐ€๋ น -x์™€ ๊ฐ™์€ ํ‘œํ˜„์‹์—์„œ - ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž x์˜ ๋ถ€ํ˜ธ๋ฅผ ์ „ํ™˜ํ•œ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” 3ํ•ญ ์—ฐ์‚ฐ์ž (ternary operator )๋„ ํ•˜๋‚˜ ์ง€์›ํ•˜๋Š”๋ฐ, ๋ฐ”๋กœ ์กฐ๊ฑด๋ถ€ ์—ฐ์‚ฐ์ž์ธ ?: ์ด๋‹ค. ์ด๋Š” ์„ธ ํ‘œํ˜„์‹๋“ค์˜ ๊ฐ’์„ ์กฐํ•ฉํ•ด ํ•˜๋‚˜์˜ ํ‘œํ˜„์‹์œผ๋กœ ๋งŒ๋“ค์–ด ๋‚ธ๋‹ค.

4.7.2 ํ”ผ์—ฐ์‚ฐ์ž์™€ ๋ฐ˜ํ™˜ ํƒ€์ž…

์ผ๋ถ€ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์˜ ํƒ€์ž…๊ณผ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋™์ž‘ํ•˜์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…์ด ์ •ํ•ด์ ธ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์‚ฐ์ž๋“ค์€ ๋Œ€์ฒด๋กœ ํŠน์ • ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜(๋˜๋Š” ํ‰๊ฐ€)ํ•œ๋‹ค. ํ‘œ 4-1์˜ 'ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…' ์—ด์€ ์—ฐ์‚ฐ์ž๋ณ„๋กœ ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…๊ณผ ํ‰๊ฐ€ ํ›„ ๋ฐ˜ํ™˜๋˜๋Š” ํƒ€์ž…์„ ๋ณด์—ฌ์ค€๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ•„์š”ํ•  ๋–„๋งˆ๋‹ค ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•œ๋‹ค(3.8์ ˆ ์ฐธ๊ณ ). ๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž _๋Š” ๋‘ ๊ฐœ์˜ ์ˆซ์ž ํƒ€์ž…์„ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ฐ–์ง€๋งŒ, ํ‘œํ˜„์‹ '3' _ '5'๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๊ธฐ ๋•Œ๋ฌธ์— ํŠน๋ณ„ํžˆ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค.

์ด ํ‘œํ˜„์‹์˜ ๊ฐ’์€ ๋ฌธ์ž์—ด '15'๊ฐ€ ์•„๋‹ˆ๋ผ ์ˆซ์ž 15๋‹ค. ๋˜ํ•œ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“  ๊ฐ’์€ ์ฐธ์ด๋‚˜ ๊ฑฐ์ง“์œผ๋กœ ํ‰๊ฐ€๋œ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž. ๋”ฐ๋ผ์„œ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ฐ–๋Š” ์—ฐ์‚ฐ์ž๋Š” ์–ด๋–ค ํƒ€์ž…์˜ ํ”ผ์—ฐ์‚ฐ์ž์™€๋„ ๋ฌธ์ œ์—†์ด ๋™์ž‘ํ•œ๋‹ค.

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

4.7.3 ์ขŒ๋ณ€ ๊ฐ’

ํ‘œ 4-1 ใ…”์„œ ํ• ๋‹น ์—ฐ์‚ฐ์ž๋ฅผ ๋น„๋กฏํ•œ ๋ช‡ ๊ฐ€์ง€ ์—ฐ์‚ฐ์ž์˜ ํ”ผ ์—ฐ์‚ฐ์ž ํƒ€์ž…์€ '์ขŒ๋ณ€ ๊ฐ’(lvalue)'์ด๋‹ค. ์ขŒ๋ณ€ ๊ฐ’์ด๋ž€ 'ํ• ๋‹น ํ‘œํ˜„์‹์˜ ์ขŒ๋ณ€์— ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ๋Š” ํ‘œํ˜„์‹'์—์„œ ์œ ๋ž˜ํ•œ ์šฉ์–ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜, ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ, ๋ฐฐ์—ด ์›์†Œ๊ฐ€ ์ขŒ๋ณ€ ๊ฐ’์ด๋‹ค. EMCAScript ๋ช…์„ธ์— ์˜ํ•˜๋ฉด ๋‚ด์žฅ ํ•จ์ˆ˜๋„ ์ขŒ๋ณ€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์ด์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ •์˜๋œ ๋‚ด์žฅ ํ•จ์ˆ˜๋Š” ํ•˜๋‚˜๋„ ์—†๋‹ค.

4.7.4 ์—ฐ์‚ฐ์ž ๋ถ€์ˆ˜ ํšจ๊ณผ

2 * 3 ๊ณผ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ์— ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š์œผ๋ฉฐ, ํ”„๋กœ๊ทธ๋žจ์ด ๋ฏธ๋ž˜์— ์ˆ˜ํ–‰ํ•  ์–ด๋–ค ๊ณ„์‚ฐ์—๋„ ์˜ํ–ฅ์„ ๋ผ์น˜์ง€ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ถ€ ํ‘œํ˜„์‹์€ ๋ถ€์ˆ˜ ํšจ๊ณผ (side effect)๋ฅผ ๊ฐ–๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ํšจ๊ณผ๋Š” ๋ฏธ๋ž˜์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ์—๋„ ์˜ํ–ฅ์„ ๋ฏธ์น˜๊ฒŒ ๋œ๋‹ค. ํ• ๋‹น ์—ฐ์‚ฐ์ž๊ฐ€ ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ์ธ๋ฐ, ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๊ทธ ๋ณ€์ˆ˜๋‚˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ํ‘œํ˜„์‹์˜ ๊ฐ’์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด๋‹ค. ์ด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ฆ๊ฐ€ ์—ฐ์‚ฐ์ž ++์™€ ๊ฐ์†Œ ์—ฐ์‚ฐ์ž --๋„ ์‹คํ–‰๋˜๋ฉด ๊ธฐ์กด์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฌต์‹œ์  ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง„๋‹ค. delete ์—ฐ์‚ฐ์ž๋„ ๋ถ€์ˆ˜ ํšจ๊ณผ๊ฐ€ ์žˆ๋Š”๋ฐ, ํ”„๋กœํผํ‹ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์€ ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ์— undefined ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค(ํ•˜์ง€๋งŒ ๋˜‘๊ฐ™์ง€๋Š” ์•Š๋‹ค).

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

4.7.5 ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ ํ‘œ 4-1์— ๋‚˜์—ดํ•œ ์—ฐ์‚ฐ์ž๋“ค์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋†’์€ ์—ฐ์‚ฐ์ž๋ถ€ํ„ฐ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์—ฐ์‚ฐ์ž ์ˆœ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ™์€ ์‚ฐ์ž๋“ค๋ผ๋ฆฌ๋Š” ์„ ์œผ๋กœ ๊ตฌ๋ถ„ํ•˜์˜€๋‹ค. ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋Š” ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋˜๋Š” ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ธฐ์ค€์ด ๋œ๋‹ค. ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์—ฐ์‚ฐ์ž๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋‚ฎ์€ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋จผ์ € ์ˆ˜ํ–‰๋œ๋‹ค. ๋‹ค์Œ ํ‘œํ˜„์‹์„ ์‚ดํŽด๋ณด์ž.

w = x + y*z;

๊ณฑ์…ˆ ์—ฐ์‚ฐ์ž *๋Š” ๋ง์…ˆ ์—ฐ์‚ฐ์ž +๋ณด๋‹ค ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ๋”ฐ๋ผ์„œ ๊ณฑ์…ˆ์ด ๋ง์…ˆ๋ณด๋‹ค ๋จผ์ € ์ˆ˜ํ–‰๋œ๋‹ค. ๋˜ํ•œ ํ• ๋‹น ์—ฐ์‚ฐ์ž =๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅธ์ชฝ์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋œ ํ›„์—์•ผ ํ• ๋‹น ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค. ์›๋ž˜ ์ •ํ•ด์ง„ ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด ๋ช…์‹œ์ ์œผ๋กœ ๊ด„ํ˜ธ๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค. ์•ž์˜ ์˜ˆ์—์„œ ๊ฐ•์ œ๋กœ ๋ง์…ˆ์„ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

w = ( x + y ) * z;

์ฐธ๊ณ ๋กœ, ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ์ด๋‚˜ ํ˜ธ์ถœ ํ‘œํ˜„์‹์€ ํ‘œ 4-1์— ๋‚˜์—ด๋œ ์—ฐ์‚ฐ์ž๋“ค๋ณด๋‹ค ํ•ญ์ƒ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๋‹ค. ๋‹ค์Œ ํ‘œํ˜„์‹์„ ์‚ดํŽด๋ณด์ž.

typeof my.functionsx

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

4.7.6 ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ

ํ‘œ 4-1์—์„œ 'A' ๋ผ๊ณ  ํ‘œ์‹œ๋œ ์—ด์€ ์—ฐ์‚ฐ์ž '๊ฒฐํ•ฉ ๋ฐฉํ–ฅ(associativity)'์„ ์ง€์ •ํ•œ๋‹ค๊ณ  ์„ค๋ช…ํ–ˆ๋‹ค. L์€ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ์˜ ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์„, R์€ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ์˜ ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์ด ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋™์ผ ์šฐ์„ ์ˆœ์œ„ ์—ฐ์‚ฐ๋“ค ๊ฐ„์˜ ์ˆ˜ํ–‰ ์ˆœ์„œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ์˜ ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์€ ์—ฐ์‚ฐ์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ผ์–ด๋‚œ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋บ„์…ˆ ์—ฐ์‚ฐ์ž๋Š” ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์ด ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ(L)์ด๊ธฐ ๋•Œ๋ฌธ์—,

w = x - y - z;

์ด ํ‘œํ˜„์‹์€ ๋‹ค์Œ๊ณผ ๋™์ผํ•˜๋‹ค.

w = (( x - y) - z );

๋ฐ˜๋ฉด, ๋‹ค์Œ์˜ ํ‘œํ˜„์‹๋“ค์€,

x = ~-y; w = x = y = z; q = q?b:c?d:e?f:g;

๋‹ค์Œ ํ‘œํ˜„์‹๋“ค๊ณผ ๊ฐ๊ฐ ๋™์ผํ•˜๋‹ค.

x = ~(-y); w = ( x = ( y = z)); q = a?b:*c?d:(e?f:g));

์ด๋ ‡๊ฒŒ ๋˜๋Š” ์ด์œ ๋Š” ๋‹จํ•ญ, ํ• ๋‹น, 3ํ•ญ ๋น„๊ต ์—ฐ์‚ฐ์ž๋“ค์˜ ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์ด ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ(R)์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

4.7.7 ํ‰๊ฐ€ ์ˆœ์œ„

์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„์™€ ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์€ ๋ณต์žกํ•œ ํ‘œํ˜„์‹์—์„œ ์–ด๋–ค ์—ฐ์‚ฐ์ด ์šฐ์„ ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š”์ง€๋ฅผ(order of evaluation) ๊ฒฐ์ •ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์–ด๋–ค ๋ถ€ ํ‘œํ˜„์‹(sub-expression)์ด ๋จผ์ € ํ‰๊ฐ€๋˜๋Š”์ง€๋ฅผ ์ •ํ•˜์ง€๋Š” ์•Š๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํ‘œํ˜„์‹ w=x+y*z์˜ ๊ฒฝ์šฐ, ๋ถ€ ํ‘œํ˜„์‹ w๊ฐ€ ๋จผ์ € ํ‰๊ฐ€๋˜๊ณ , x,y,z๊ฐ€ ์ฐจ๋ก€๋Œ€๋กœ ํ‰๊ฐ€๋œ๋‹ค. ๊ทธ ํ›„์— y์™€ z๋ฅผ ๊ณฑํ•œ ํ›„, x ๊ฐ’์„ ๋”ํ•ด์„œ ํ‘œํ˜„์‹ w๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋‚˜ ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๋กœ ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค. ํ‘œํ˜„์‹์— ๊ด„ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ณฑ์…ˆ, ๋ง์…ˆ, ํ• ๋‹น ์‚ฌ์ด์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ์˜ ํ‰๊ฐ€ ์ˆœ์„œ๊นŒ์ง€ ๋ฐ”๊ฟ€ ์ˆ˜๋Š” ์—†๋‹ค.

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

4.8 ์‚ฐ์ˆ  ํ‘œํ˜„์‹

์ด๋ฒˆ ์ ˆ์—๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋“ค์— ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ด๋‚˜ ๊ธฐํƒ€ ์ˆ˜์น˜ ์กฐ์ž‘์„ ํ•˜๋Š” ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ๋‹ค๋ฃฌ๋‹ค. ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ, ๋บ„์…ˆ ์—ฐ์‚ฐ์ž๋Š” ๋งค์šฐ ์ง๊ด€์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ž๋ณด๋‹ค ๋จผ์ € ๋‹ค๋ฃจ๊ฒ ๋‹ค. ๋ง์…ˆ ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ˆœํžˆ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ๋ง์…ˆ ์—ฐ์‚ฐ๋ฟ ์•„๋‹ˆ๋ผ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํ”ผ์—ฐ์‚ฐ์ž์˜ ํƒ€์ž…์„ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์–ด์„œ ๋ณ„๋„์˜ ์ ˆ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃฐ ๊ฒƒ์ด๋‹ค. ๋‹จํ•ญ ์—ฐ์‚ฐ์ž์™€ ๋น„ํŠธ ์—ฐ์‚ฐ์ž ๋˜ํ•œ ์„ธ๋ถ€ ์ ˆ์—์„œ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” *(๊ณฑ์…ˆ), /(๋‚˜๋ˆ—์…ˆ), %(๋‚˜๋จธ์ง€), +(๋ง์…ˆ), -(๋บ„์…ˆ)์ด๋‹ค. ์•ž์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด, + ์—ฐ์‚ฐ์ž๋Š” ๋ณ„๋„์˜ ์ ˆ์—์„œ ์‚ดํŽด๋ณด๊ฒ ๋‹ค. ๋‹ค๋ฅธ ๋„ค๊ฐ€์ง€ ๊ธฐ๋ณธ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ˆœํžˆ ๊ฐ๊ฐ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ํ‰๊ฐ€ํ•˜๊ณ , ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค. ๊ทธ ๋‹ค์Œ์— ํ”ผ์—ฐ์‚ฐ์ž๋“ค์˜ ์ตœ์ข… ๊ฐ’์œผ๋กœ ๊ณฑ์…ˆ, ๋‚˜๋ˆ—์…ˆ, ๋‚˜๋จธ์ง€, ๋บ„์…ˆ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ˆ˜๋กœ ๋ณ€ํ™˜ ๋ถˆ๊ฐ€๋Šฅํ•œ ํ”ผ์—ฐ์‚ฐ์ž๋Š” NaN ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฉฐ, ํ”ผ ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๋ผ๋„ NaN์ผ ๊ฒฝ์šฐ์—๋Š” ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋„ NaN์ด๋‹ค.

/์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์ด ์ •์ˆ˜์™€ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์ต์ˆ™ํ•˜๋‹ค๋ฉด, ์ •์ˆ˜๋ฅผ ์ •์ˆ˜๋กœ ๋‚˜๋ˆ„๋ฉด ๊ณ„์‚ฐ ๊ฐ’์ด ๋‹น์—ฐํžˆ ์ •์ˆ˜๊ฐ€ ๋˜๋ฆฌ๋ผ๊ณ  ์˜ˆ์ƒํ•  ๊ฒƒ์ด๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ชจ๋“  ์ˆซ์ž๋Š” ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋‚˜๋ˆ—์…ˆ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ ๋˜ํ•œ ๋ถ€๋™์†Œ์ˆ˜์  ์ˆซ์ž ๊ฐ’์ด ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 5.2๋Š” 2๊ฐ€ ์•„๋‹ˆ๋ผ 2.5๋กœ ํ‰๊ฐ€๋œ๋‹ค. ๊ฐ’์„ 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ์–‘์˜ ๋ฌดํ•œ๋Œ€ ๋˜๋Š” ์Œ์˜ ๋ฌดํ•œ๋Œ€ ๊ฐ’์ด ๋˜๊ณ , 0/0์˜ ๊ฐ’์€ NaN๋กœ ํ‰๊ฐ€๋œ๋‹ค. ์ด๋“ค ์ค‘ ์–ด๋– ํ•œ ๊ฒฝ์šฐ๋ผ๋„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

% ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•œ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•˜๋ฉด ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋‚˜๋ˆ„๊ณ  ๋‚จ์€ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๊ฒฐ๊ณผ์˜ ๋ถ€ํ˜ธ๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ถ€ํ˜ธ์™€ ๋™์ผํ•˜๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 5 % 2์˜ ๊ฒฐ๊ณผ๋Š” 1์ด๊ณ , -5 % 2์˜ ๊ฒฐ๊ณผ๋Š” -1์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž๋Š” ์ •์ˆ˜ ํƒ€์ž…์˜ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์‚ฌ์šฉ๋˜์ง€๋งŒ, ๋ถ€๋™์†Œ์ˆ˜์  ๊ฐ’์— ๋Œ€ํ•ด์„œ๋„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 6.5 % 2.1 ์˜ ๊ฒฐ๊ณผ๋Š” 0.2 ์ด๋‹ค.

4.8.1 ๋ง์…ˆ ์—ฐ์‚ฐ์ž +

  • ์—ฐ์‚ฐ์ž๊ฐ€ ์ดํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋  ๋–„๋Š” ํ”ผ ์—ฐ์‚ฐ์ž ์ˆซ์ž ๊ฐ’์„ ๋”ํ•˜๊ฑฐ๋‚˜ ํ”ผ์—ฐ์‚ฐ์ž ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ธ๋‹ค.

1 + 2 // => '3' "hello" + " " + "there: // => 'hello there' "1" + "2" // => '12'

๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๋ชจ๋‘ ์ˆซ์ž๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ์—๋Š” + ์—ฐ์‚ฐ์ž๊ฐ€ ํ•˜๋Š” ์ผ์ด ๋ช…ํ™•ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ด ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” ํƒ€์ž… ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ ธ์•ผ ํ•˜๊ณ , ์—ฐ์‚ฐ์€ ํƒ€์ž… ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ง„ ํ›„์— ์ˆ˜ํ–‰๋œ๋‹ค. + ์—ฐ์‚ฐ์ž๋Š” ํƒ€์ž… ๋ณ€ํ™˜ ์‹œ์— ๋ฌธ์ž์—ด ์ด์–ด๋ถ™์ด๊ธฐ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋งŒ์ผ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ผ๋ฉด ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋‘ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ธ๋‹ค. ๋ง์…ˆ์€ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๋ชจ๋‘ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์—†์„ ๋•Œ๋งŒ ์ˆ˜ํ–‰๋œ๋‹ค. ๊ธฐ์ˆ ์ ์œผ๋กœ + ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋™์ž‘ํ•œ๋‹ค.

โ€ข ๋งŒ์ผ ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์ด ๊ฐ์ฒด๋ผ๋ฉด, 3.8.3 ์—์„œ ์„ค๋ช…ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ์›์‹œ ํƒ€์ž…์œผ๋กœ ๋ฐ”๊พผ๋‹ค. Date ๊ฐ์ฒด๋Š” toString() ๋ฉ”์„œ๋“œ์— ์˜ํ•ด ๋ฌธ์ž์—ด๋กœ ๋ฐ”๋€Œ๊ณ , ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์€ valueOf() ๋ฉ”์„œ๋“œ๊ฐ€ ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ทธ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋Œ€๋ถ€๋ถ„์˜ ๊ฐ์ฒด๋Š” ์ด์ฒ˜๋Ÿผ ์œ ์šฉํ•œ valueOf() ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ทธ ๋Œ€์‹  toString() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ณ€ํ™˜๋œ๋‹ค.
โ€ข ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ์ฒด์—์„œ ์›์‹œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋œ ํ›„, ๋งŒ์ผ ์–ด๋–ค ํ”ผ์—ฐ์‚ฐ์ž๋ผ๋„ ๋ฌธ์ž์—ด์ด๋ฉด, ๋‹ค๋ฅธ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋‘ ๋ฌธ์ž์—ด์„ ์ด์–ด ๋ถ™์ธ๋‹ค.
โ€ข ์ด ์™ธ์˜ ๊ฒฝ์šฐ์—๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ˆซ์ž(๋˜๋Š” NaN)๋กœ ๋ณ€ํ™˜๋˜๊ณ  ๋ง์…ˆ ์—ฐ์‚ฐ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

๋ช‡ ๊ฐ€์ง€ ์˜ˆ๋ฅผ ์‚ดํŽด๋ณด์ž.

1 + 2 // => 3: ๋ง์…ˆ "1" + "2" // => '12': ์ด์–ด๋ถ™์ด๊ธฐ "1" + 2 // => '12': ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ ํ›„ ์ด์–ด๋ถ™์ด๊ธฐ 1 + { ? } // => "1[object Object]" : ๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ ํ›„ ์ด์–ด๋ถ™์ด๊ธฐ true + true // => 2: ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ฐ”๊พผ ํ›„ ๋”ํ•˜๊ธฐ 2 + null // => 2: null ๊ฐ’์„ 0์œผ๋กœ ๋ฐ”๊พผ ํ›„ ๋”ํ•˜๊ธฐ 2 + undefined // => NaN: undefined๋ฅผ NaN์œผ๋กœ ๋ฐ”๊พผ ํ›„ ๋”ํ•˜๊ธฐ

๋งˆ์ง€๋ง‰์œผ๋กœ, + ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด๊ณผ ์—ฌ๋Ÿฌ ์ˆซ์ž๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์—ฐ์‚ฐ์ž ๊ฒฐํ•ฉ ๋ฒ•์น™์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๋ฐ˜๋“œ์‹œ ๊ธฐ์–ตํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ์—ฐ์‚ฐ์ž๊ฐ€ ์‹คํ–‰๋œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

1 + 2 + " blind mice "; // => '3 blind mice ' 1 + ( 2 + " blind mice"); // => '12 blind mice'

1ํ–‰์€ ๊ด„ํ˜ธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— + ์—ฐ์‚ฐ์ž๋Š” ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฒฐํ•ฉ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‘ ์ˆซ์ž๊ฐ€ ๋จผ์ € ๊ณ„์‚ฐ๋˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ ํ›„ ๋‚จ์€ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ธ๋‹ค. 2ํ–‰์—์„œ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์—ฐ์‚ฐ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ˆซ์ž 2๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๋€Œ์–ด ๋ฌธ์ž์—ด๊ณผ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง„๋‹ค. ๊ทธ ๋‹ค์Œ์— ์ˆซ์ž 1์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พผ ํ›„ ๋‚จ์€ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ธ๋‹ค.

4.8.2 ๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž

๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋Š” ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์„ ์ˆ˜์ •ํ•ด์„œ ์ƒˆ ๊ฐ’์œผ๋กœ ๋งŒ๋“ ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ€์žฅ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๊ณ , ๊ฒฐํ•ฉ ๋ฐฉํ–ฅ์€ ๋ชจ๋‘ ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์ด๋‹ค. ์ด๋ฒˆ ์ ˆ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์‚ฐ์ˆ  ๋‹จํ•ญ ์—ฐ์‚ฐ์ž (+, -, ++, --)๋Š” ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ€๋Šฅํ•œ ํ•œ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋ ค ์‹œ๋„ํ•œ๋‹ค. ๋А๋‚Œํ‘œ(!) ๋ฌธ์ž์™€ +, =๋Š” ๋‹จํ•ญ๊ณผ ์ดํ•ญ ์—ฐ์‚ฐ์ž ์–‘์ชฝ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹จํ•ญ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๋‹จํ•ญ ๋ง์…ˆ(+)

๋‹จํ•ญ ๋ง์…ˆ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž(๋˜๋Š” NaN)๋กœ ๋ฐ”๊พผ ํ›„ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งŒ์ผ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์ˆซ์ž์ธ ๊ฒฝ์šฐ์—๋Š” ์•„๋ฌด ์ผ๋„ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋‹จํ•ญ ๋บ„์…ˆ(-)

๋บ„์…ˆ ์—ฐ์‚ฐ์ž๊ฐ€ ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋  ๋•Œ๋Š”, ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๊ฐ€๋Šฅํ•˜๋ฉด ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ , ์„ฑ๊ณตํ•  ๊ฒฝ์šฐ์— ๊ฒฐ๊ณผ ๊ฐ’์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พผ๋‹ค.

์ฆ๊ฐ€(++)

++ ์—ฐ์‚ฐ์ž๋Š” ๋‹จํ•ญ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์ฆ๊ฐ€ ์—ฐ์‚ฐ์„ ํ•œ๋‹ค(์ฆ‰, 1์„ ๋”ํ•œ๋‹ค). ์ด๋–„ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜๋“œ์‹œ ์ขŒ๋ณ€ ๊ฐ’(๋ณ€์ˆ˜, ๋ฐฐ์—ด ์›์†Œ ๋˜๋Š” ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ค‘ ํ•˜๋‚˜)์ด์–ด์•ผ ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€์ˆ˜, ์›์†Œ, ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ ++ ์—ฐ์‚ฐ์ž๋Š” ์ผ๋‹จ ์ด๋ฅผ ์ˆซ์ž ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๊ฑฐ๊ธฐ 1์„ ๋”ํ•œ ๋‹ค์Œ, ์›๋ž˜ ๋ณ€์ˆ˜๋‚˜ ์›์†Œ, ํ”„๋กœํผํ‹ฐ์— ๋Œ€์ž…ํ•œ๋‹ค.

์ด ์—ฐ์‚ฐ์ž์˜ ๊ฒฐ๊ณผ ๊ฐ’์€ ํ”ผ์—ฐ์‚ฐ์ž์˜ ์–ด๋А์ชฝ์— ์—ฐ์‚ฐ์ž๊ฐ€ ์œ„์น˜ํ•ด ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฅด๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์˜ ์•ž์—์„œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ์—๋Š” ์ „์น˜์ฆ๊ฐ€(pre-increment) ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ•˜๋ฉฐ, ๋จผ์ € ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ ๋‹ค์Œ ์ฆ๊ฐ€๋œ ๊ฐ’์„ ๊ฒฐ๊ณผ๋กœ ๋‚ด๋†“๋Š”๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋’ค์—์„œ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ ํ›„์น˜์ฆ๊ฐ€(post-increment) ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ•˜๋ฉฐ, ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค์ง€๋งŒ ๊ฒฐ๊ณผ๋กœ๋Š” ์›๋ž˜์˜ ์ฆ๊ฐ€๋˜์ง€ ์•Š์€ ๊ฐ’์„ ๋‚ด๋†“๋Š”๋‹ค. ๋‹ค์Œ ๋‘ ์ฝ”๋“œ ์‚ฌ์ด์˜ ์ฐจ์ด์ ์„ ์‚ดํŽด๋ณด์ž.

var i = 1, j = ++i; // i์™€ j ๋ชจ๋‘ 2์ด๋‹ค. var i = 1, j = i++; // i๋Š” 2์ด๊ณ , j๋Š” 1์ด๋‹ค.

ํ‘œํ˜„์‹ ++x๋Š” x=x+1๊ณผ ํ•ญ์ƒ ๊ฐ™์ง€ ์•Š์Œ์„ ๋ช…์‹ฌํ•˜์ž. ++ ์—ฐ์‚ฐ์ž๋Š” ์ ˆ๋Œ€ ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š๊ณ , ํ•ญ์ƒ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์ˆซ์ž๋กœ ๋ฐ”๊พผ ํ›„์— ๊ฐ’์„ ํ•˜๋‚˜ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, x๊ฐ€ ๋ฌธ์ž์—ด "1"์ด๋ฉด ++x๋Š” ์ˆซ์ž 2๊ฐ€ ๋˜์ง€๋งŒ x+1์€ ๋ฌธ์ž์—ด"11"์ด ๋œ๋‹ค.

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

๊ฐ์†Œ(--)

-- ์—ฐ์‚ฐ์ž ์—ญ์‹œ ++ ์—ฐ์‚ฐ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ขŒ๋ณ€ ๊ฐ’(๋ณ€์ˆ˜, ๋ฐฐ์—ด ์›์†Œ ๋˜๋Š” ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ค‘ ํ•˜๋‚˜)์„ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ฐ–๋Š”๋‹ค. -- ์—ฐ์‚ฐ์ž๋Š” ๋‹จํ•ญ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ์ˆซ์ž๋กœ ๋ฐ”๊พผ ํ›„์— 1์„ ๋บ€๋‹ค. ๊ทธ ๋‹ค์Œ์— ๊ฐ์†Œํ•œ ๊ฐ’์„ ํ”ผ์—ฐ์‚ฐ์ž์— ๋‹ค์‹œ ํ• ๋‹นํ•œ๋‹ค. ++ ์—ฐ์‚ฐ์ž์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ -- ์—ฐ์‚ฐ์ž ์—ญ์‹œ, ์—ฐ์‚ฐ์ž๊ฐ€ ์–ด๋А ์ชฝ์— ์œ„์น˜ํ•ด ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๊ฒฐ๊ณผ ๊ฐ’์ด ๋‹ฌ๋ผ์ง„๋‹ค. ๋งŒ์•ฝ ํ”ผ์—ฐ์‚ฐ์ž ์•ž์— ์žˆ์œผ๋ฉด ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ค๊ณ , ๊ฐ์†Œ์‹œํ‚จ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งŒ์ผ ํ”ผ์—ฐ์‚ฐ์ž ๋’ค์— ์žˆ์œผ๋ฉด, ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๊ฐ์†Œ์‹œํ‚ค์ง€๋งŒ ๊ฐ์†Œ์‹œํ‚ค๊ธฐ ์ „ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ++ ์—ฐ์‚ฐ์ž์—์„œ์™€ ๊ฐ™์€ ์ด์œ ๋กœ ์—ฐ์‚ฐ์ž๊ฐ€ ํ›„์น˜ ๊ฐ์†Œ ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋  ๋•Œ๋Š” ์—ฐ์‚ฐ์ž์™€ ํ”ผ์—ฐ์‚ฐ์ž ์‚ฌ์ด์— ์ค„๋ฐ”๊ฟˆ์ด ์žˆ์–ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.

4.8.3 ๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž

๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž๋“ค์€ 2์ง„์ˆ˜๋ฅผ ์ €์ˆ˜์ค€์—์„œ ์กฐ์ž‘ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค. ์‚ฌ์น™์—ฐ์‚ฐ๊ณผ ๊ฐ™์€ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์ˆซ์ž ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ณ  ์ตœ์ข…์ ์œผ๋กœ ์ˆซ์ž ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž๋กœ ๋ถ„๋ฅ˜๋˜์–ด ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์ž๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋„๋ฆฌ ์“ฐ์ด์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์ผ ์—ฌ๋Ÿฌ๋ถ„์ด 10์ง„์ˆ˜ ์ •์ˆ˜๋ฅผ 2์ง„์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์— ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋ฉด ์ด๋ฒˆ ์ ˆ์—์„œ ์„ค๋ช…ํ•˜๋Š” ์—ฐ์‚ฐ์ž๋“ค์„ ๊ฑด๋„ˆ๋›ฐ์–ด๋„ ์ข‹๋‹ค. ๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž ์ค‘ ๋„ค ์ข…๋ฅ˜(&, |, ^, ~)๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ๋ณ„ ๋น„ํŠธ์— ๋Œ€ํ•ด ๋ถˆ๋ฆฌ์–ธ ๋Œ€์ˆ˜(Boolean Algebra)๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด๋•Œ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ๋ณ„ ๋น„ํŠธ๋Š” ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ์ทจ๊ธ‰๋œ๋‹ค( 1 = true, 0 = false). ๋‹ค๋ฅธ ์„ธ ์ข…๋ฅ˜์˜ ๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž(<<, >>, >>>)๋Š” ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋น„ํŠธ๋ฅผ ์ด๋™ํ•  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ๋Š” ์ •์ˆ˜๊ฐ€ ์˜จ๋‹ค. ์—ฌ๊ธฐ์„œ ์ •์ˆ˜๋Š” 64๋น„ํŠธ ๋ถ€๋™ ์†Œ์ˆ˜์  ํ‘œํ˜„๋ฒ•์ด ์•„๋‹ˆ๋ผ 32๋น„ํŠธ ์ •์ˆ˜ ํ‘œํ˜„๋ฒ•์„ ๋”ฐ๋ฅธ๋‹ค. ๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์„ ๊ฐ€๋Šฅํ•˜๋ฉด ์ˆซ์ž๋กœ ๋ฐ”๊พธ๊ณ , 32๋ฒˆ์งธ ์ดํ›„ ๋น„ํŠธ๋ฅผ ์ž˜๋ผ๋‚ด์–ด ๊ฐ•์ œ๋กœ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์„ 32๋น„ํŠธ๋กœ ๋งŒ๋“ ๋‹ค. ์ด๋™ ์—ฐ์‚ฐ์ž(shift operator)์˜ ์šฐ์ธก ํ”ผ์—ฐ์‚ฐ์ž๋Š” 0๊ณผ 31 ์‚ฌ์ด์˜ ๊ฐ’์ด์–ด์•ผ ํ•œ๋‹ค. ์ด๋™ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ 32๋น„ํŠธ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜ํ•œํ›„ ์—ฌ์„ฏ ๋ฒˆ์งธ ์ด์ƒ์˜ ๋น„ํŠธ๋ฅผ ๋ฒ„๋ฆผ์œผ๋กœ์จ ์ด ์ˆซ์ž๊ฐ€ ์ ์ ˆํ•œ ๋ฒ”์œ„์— ๋“ค๋„๋ก ํ•œ๋‹ค. ๋†€๋ž๊ฒŒ๋„ NaN, ์–‘์˜ ๋ฌดํ•œ๋Œ€(infinity), ์Œ์˜ ๋ฌดํ•œ๋Œ€(-infinity)๋Š” ๋น„ํŠธ ๋‹จ์œ„ ์—ฐ์‚ฐ์ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉ๋  ๋–„ ๋ชจ๋‘ ๊ฐ’์ด 0์œผ๋กœ ๋ฐ”๋€๋‹ค.

๋น„ํŠธ ๋‹จ์œ„ AND(&)

& ์—ฐ์‚ฐ์ž๋Š” ๋‘ ์ •์ˆ˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ๋ณ„ ๋น„ํŠธ๋ผ๋ฆฌ ๋ถˆ๋ฆฌ์–ธ AND ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋™์ผ ์œ„์น˜์˜ ๋น„ํŠธ๊ฐ€ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์—์„œ ๋ชจ๋‘ ์„ค์ •๋˜์–ด ์žˆ์–ด์•ผ๋งŒ ๊ฒฐ๊ณผ ๊ฐ’์˜ ํ•ด๋‹น ๋น„ํŠธ๋„ ์„ค์ •๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 0x1234 & 0x00FF์˜ ๊ฒฐ๊ณผ๋Š” 0x0034๋‹ค.

๋น„ํŠธ ๋‹จ์œ„ OR ( | )

| ์—ฐ์‚ฐ์ž๋Š” ๋‘์ •์ˆ˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ๋ณ„ ๋น„ํŠธ๋ผ๋ฆฌ ๋ถˆ๋ฆฌ์–ธOR ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”ผ์—ฐ์‚ฐ์ž์—๊ฒŒ ํŠน์ • ์œ„์น˜์˜ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ๊ฒฐ๊ณผ ๊ฐ’์˜ ํ•ด๋‹น ์œ„์น˜ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 0x1234 | 0x00FF์˜ ๊ฒฐ๊ณผ๋Š” 0x12FF๋‹ค.

๋น„ํŠธ ๋‹จ์œ„ XOR (^)

^์—ฐ์‚ฐ์ž๋Š” ๋‘ ์ •์ˆ˜ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ๋ณ„ ๋น„ํŠธ๋ผ๋ฆฌ ๋ฐฐํƒ€์ (exclusive) ๋ถˆ๋ฆฌ์–ธ OR (XOR) ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋ฐฐํƒ€์  OR๋ž€ ๋‘ ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ true์ด์ง€๋งŒ ๋‘˜ ๋‹ค true๋Š” ์•„๋‹๋•Œ ๊ฒฐ๊ณผ๊ฐ€ true๊ฐ€ ๋œ๋‹ค. ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜์—๋งŒ ํŠน์ • ์œ„์น˜์˜ ๋น„ํŠธ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉด ๊ฒฐ๊ณผ ๊ฐ’์˜ ํ•ด๋‹น ์œ„์น˜ ๋น„ํŠธ๋„ ์„ค์ •๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 0xFF00 ^ 0xF0F0์˜ ๊ฒฐ๊ณผ๋Š” 0x0FF0๋‹ค.

๋น„ํŠธ ๋‹จ์œ„ NOT (~)

~์—ฐ์‚ฐ์ž๋Š” ๋‹จํ•ญ ์—ฐ์‚ฐ์ž๋กœ ํ•˜๋‚˜์˜ ์ •์ˆ˜ ํ”ผ์—ฐ์‚ฐ์ž ์•ž์— ์œ„์น˜ํ•œ๋‹ค. ~ ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋ฐ˜์ „์‹œํ‚จ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ถ€ํ˜ธ ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ธํ•ด, ์–ด๋–ค ๊ฐ’์— ~ ์—ฐ์‚ฐ์ž๋ฅผ ์ ์šฉํ•˜๋ฉด ๊ทธ ๊ฐ’์˜ ๋ถ€ํ˜ธ๋ฅผ ๋ฐ”๊พธ๊ณ  1์„ ๋นผ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ~0x0F๋Š” 0xFFFFFFF0์ด๋ฉฐ, ์ด๋Š” -16๊ณผ ๊ฐ™๋‹ค.

์™ผ์ชฝ์œผ๋กœ ์ด๋™ (<<)

<< ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์—์„œ ์ง€์ •ํ•œ ์ž๋ฆฟ์ˆ˜๋งŒํผ ์™ผ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜๋“œ์‹œ 0๊ณผ 31 ์‚ฌ์ด์˜ ์ •์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด a << 1 ์—ฐ์‚ฐ์˜ ๊ฒฝ์šฐ a์˜ ์ฒซ ๋ฒˆ์งธ ๋น„ํŠธ๋Š” ๋‘ ๋ฒˆ์งธ ๋น„ํŠธ๊ฐ€ ๋˜๊ณ , ๋‘ ๋ฒˆ์งธ ๋น„ํŠธ๋Š” ์„ธ ๋ฒˆ์งธ ๋น„ํŠธ๊ฐ€ ๋˜๊ณ โ€ฆ ์ด ๊ณผ์ •์ด ์ด์–ด์ง„๋‹ค. ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ์ด๋™์‹œํ‚ค๋ฉด ์ฒซ ๋ฒˆ์งธ ๋น„ํŠธ๋ฅผ ์ƒˆ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š”๋ฐ, ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๋น„ํŠธ์˜ ๊ฐ’์œผ๋กœ๋Š” 0์ด ์‚ฌ์šฉ๋˜๋ฉฐ ๊ธฐ์กด์˜ 32๋ฒˆ์งธ ๋น„ํŠธ๋Š” ์žƒ์–ด๋ฒ„๋ฆฌ๊ฒŒ ๋œ๋‹ค. ์–ด๋–ค ๊ฐ’์„ ์™ผ์ชฝ์œผ๋กœ ํ•œ ์ž๋ฆฌ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ 2๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์œผ๋ฉฐ, ๋‘ ์ž๋ฆฌ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ 4๋ฅผ ๊ณฑํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 7 << 2์˜ ๊ฒฐ๊ณผ๋Š” 28์ด๋‹ค.

๋ถ€ํ˜ธ๋ฅผ ๋ณด์กดํ•˜๋ฉด์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ ( >>)

์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ชจ๋“  ๋น„ํŠธ๋ฅผ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์—์„œ ์ง€์ •ํ•œ ์ž๋ฆฟ์ˆ˜๋งŒํผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚จ๋‹ค. ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋ฐ˜๋“œ์‹œ 0๊ณผ 31 ์‚ฌ์ด์˜ ์ •์ˆ˜์—ฌ์•ผ ํ•œ๋‹ค. ๋น„ํŠธ๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™์‹œํ‚ค๋ฉด ๋งจ ์˜ค๋ฅธ์ชฝ ๋น„ํŠธ๋“ค์€ ์†์‹ค๋œ๋‹ค. ์™ผ์ชฝ ์ž๋ฆฌ์— ์ฑ„์›Œ์งˆ ๋น„ํŠธ๋Š” ์ตœ์†Œ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ถ€ํ˜ธ ๋น„ํŠธ๊ฐ€ ๋˜๊ณ , ์ด๋Š” ๊ณง ๊ฒฐ๊ณผ ๊ฐ’์˜ ๋ถ€ํ˜ธ๊ฐ€ ๋œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ์–‘์ˆ˜๋ฉด, ๊ฒฐ๊ณผ ๊ฐ’์˜ ์ตœ์ƒ์œ„ ๋น„ํŠธ๊ฐ€ 0์ด ๋˜๊ณ , ์Œ์ˆ˜๋ฉด ์ตœ์ƒ์œ„ ๋น„ํŠธ 1์ด ๋œ๋‹ค. ์–ด๋–ค ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•œ ์ž๋ฆฌ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ ์ด ๊ฐ’์„ 2๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ ๊ฐ™๊ณ , ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‘ ์ž๋ฆฌ๋ฅผ ์ด๋™์‹œํ‚ค๋Š” ๊ฒƒ์€ ๊ฐ’์„ 4๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 7 >> 1์˜ ๊ฒฐ๊ณผ๋Š” 3์ด๊ณ , -7 >> 1์˜ ๊ฒฐ๊ณผ๋Š” -4๋‹ค.

0์œผ๋กœ ์ฑ„์šฐ๋ฉด์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ ( >>> )

์—ฐ์‚ฐ์ž๋Š” >> ์—ฐ์‚ฐ์ž์™€ ํ•œ ๊ฐ€์ง€๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋˜‘๊ฐ™๋‹ค. ์ฐจ์ด์ ์€, ์™ผ์ชฝ ์ž๋ฆฌ์— ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋Š” ๋น„ํŠธ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ถ€ํ˜ธ์— ๊ด€๊ณ„์—†์ด ๋ฌด์กฐ๊ฑด 0์ด๋ผ๋Š” ์ ์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, -1 >> 4์˜ ๊ฒฐ๊ณผ๋Š” -1์ด์ง€๋งŒ, -1 >>> 4์˜ ๊ฒฐ๊ณผ๋Š” 0x0FFFFFFF๋‹ค.

4.9 ๊ด€๊ณ„ํ˜• ํ‘œํ˜„์‹

์ด๋ฒˆ ์ ˆ์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ด€๊ณ„ํ˜• ์—ฐ์‚ฐ์ž(relational operator)๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ์ด๋Ÿฌํ•œ ์—ฐ์‚ฐ์ž๋“ค์€ ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์˜ ๊ด€๊ณ„(์ด๋ฅผํ…Œ๋ฉด ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€, ํ•œ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฐ’๋ณด๋‹ค ์ž‘์€์ง€ ๋˜๋Š” ํ•œ ๊ฐ’์ด ๋‹ค๋ฅธ ๊ฐ’์˜ ํ”„๋กœํผํ‹ฐ๋กœ ์กด์žฌํ•˜๋Š”์ง€ ๋“ฑ)๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ, ๊ด€๊ณ„๊ฐ€ ์„ฑ๋ฆฝํ•˜๋ฉด true๋ฅผ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๊ด€๊ณ„ํ˜• ํ‘œํ˜„์‹์€ ํ•ญ์ƒ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ํ‰๊ฐ€๋˜๊ณ , ์ด ๊ฐ’์€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ if๋ฌธ, while๋ฌธ, for ๋ฃจํ”„๋ฌธ์—์„œ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด์ œ๋ถ€ํ„ฐ ๋™์น˜์™€ ๋ถ€๋“ฑ์น˜ ์—ฐ์‚ฐ์ž, ๋น„๊ต ์—ฐ์‚ฐ์ž, ๊ด€๊ณ„ํ˜• ์—ฐ์‚ฐ์ž์ธ in๊ณผ instanceof๋ฅผ ์‚ดํŽด๋ณด๊ฒ ๋‹ค.

4.9.1 ๋™์น˜์™€ ๋ถ€๋“ฑ์น˜ ์—ฐ์‚ฐ์ž

==์™€ === ์—ฐ์‚ฐ์ž ๋ชจ๋‘ ์ฃผ์–ด์ง„ ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฐ ์“ฐ์ด์ง€๋งŒ ๊ฐ™์Œ์„ ์ •์˜ํ•˜๋Š” ๊ธฐ์ค€์ด ์„œ๋กœ ๋‹ค๋ฅด๋‹ค. ๋‘ ์—ฐ์‚ฐ์ž ๋ชจ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…์„ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ , ์ฃผ์–ด์ง„ ํ”ผ์—ฐ์‚ฐ์ž๋“ค์ด ๊ฐ™์œผ๋ฉด true๋ฅผ, ๋‹ค๋ฅด๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. === ์—ฐ์‚ฐ์ž๋Š” ์ผ์น˜(์—„๊ฒฉํ•œ ๋™์น˜) ์—ฐ์‚ฐ์ž๋กœ ์•Œ๋ ค์ ธ ์žˆ๋Š”๋ฐ, ๊ฐ™์Œ์„ ์ •์˜ํ•˜๋Š” ๊ธฐ์ค€์„ ๋งค์šฐ ์—„๊ฒฉํ•˜๊ฒŒ ์ •์˜ํ•˜์—ฌ, ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ '์ผ์น˜(identical)'ํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. == ์—ฐ์‚ฐ์ž๋Š” ๋™์น˜ ์—ฐ์‚ฐ์ž๋กœ ์•Œ๋ ค์ ธ ์žˆ์œผ๋ฉฐ, ๋‘ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ '๋™๋“ฑ(equal)'ํ•œ์ง€ ํ™•์ธํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํƒ€์ž… ๋ณ€ํ™˜์„ ํ—ˆ์šฉํ•œ๋‹ค. ์ด๋•Œ ๊ฐ™์Œ์„ ์ •์˜ํ•˜๋Š” ๊ธฐ์ค€์ด === ์—ฐ์‚ฐ์ž๋งŒํผ ์—„๊ฒฉํ•˜์ง€๋Š” ์•Š๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” =(ํ• ๋‹น), ==(๋™์น˜), ===(์ผ์น˜) ์—ฐ์‚ฐ์ž๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„์€ ํ• ๋‹น, ๋™์น˜, ์ผ์น˜ ์—ฐ์‚ฐ์ž์˜ ์ฐจ์ด๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์ดํ•ดํ•ด์•ผ ํ•˜๋ฉฐ, ์ฝ”๋”ฉํ•  ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค! ์ด ์„ธ๊ฐ€์ง€๋ฅผ ๋ชจ๋‘ ๊ฐ™์€(equal)์—ฐ์‚ฐ์ž๋กœ ํ˜ผ๋™ํ•˜๊ธฐ ์‰ฌ์šด๋ฐ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํ˜ผ๋™์„ ์ค„์ด๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค. = ์—ฐ์‚ฐ์ž๋Š” '์ทจํ•˜๋‹ค(get) ๋˜๋Š” ํ• ๋‹นํ•˜๋‹ค(assigned)'๋กœ, == ์—ฐ์‚ฐ์ž๋Š” '~์™€ ๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค(is equal to)', ๋งˆ์ง€๋ง‰์œผ๋กœ === ์—ฐ์‚ฐ์ž๋Š” '~์™€ ์ผ์น˜ํ•œ๋‹ค(is strictly equal to)'๋กœ ์ฝ๋Š” ๊ฒƒ์ด๋‹ค. !=์™€ !== ์—ฐ์‚ฐ์ž๊ฐ€ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ์•ž์—์„œ ์‚ดํŽด๋ณธ ==์™€ ===์—ฐ์‚ฐ์ž๊ฐ€ ๋น„๊ตํ•˜๋Š”๊ฒƒ๊ณผ ์ •ํ™•ํžˆ ๋ฐ˜๋Œ€๋‹ค. ๋ถ€๋“ฑ์น˜ ์—ฐ์‚ฐ์ž !=๋Š” ๋‘ ๊ฐ’์ด ์„œ๋กœ ๋™์น˜์ผ ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž !==๋Š” ๋‘ ๊ฐ’์ด ์„œ๋กœ ์ผ์น˜ํ•  ๊ฒฝ์šฐ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ, ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 4.10์ ˆ์—์„œ ์‚ดํŽด๋ณด๊ฒ ์ง€๋งŒ, ! ์—ฐ์‚ฐ์ž๋Š” ๋ถˆ๋ฆฌ์–ธ NOT ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ด ์ ์„ ๊ฐ์•ˆํ•˜๋ฉด !=๊ฐ€ '๊ฐ™์€ ๊ฐ’์œผ๋กœ ๋ณผ ์ˆ˜ ์—†๋‹ค'๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, !==๋Š” '์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค'๋ฅผ ๋งํ•œ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์‰ฝ๊ฒŒ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

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

โ€ข ๋‘ ๊ฐ’์˜ ํƒ€์ž…์ด ์„œ๋กœ ๋‹ค๋ฅด๋ฉด ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.
โ€ข ๋‘ ๊ฐ’์ด ๋ชจ๋‘ null์ด๊ฑฐ๋‚˜ ๋ชจ๋‘ undefined๋ฉด, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•œ๋‹ค.
โ€ข ๋‘ ๊ฐ’์ด ๋ชจ๋‘ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’ true์ด๊ฑฐ๋‚˜ ๋ชจ๋‘ false์ผ ๊ฒฝ์šฐ์—, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•œ๋‹ค.
โ€ข ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๊ฐ’์ด NaN์ด๋ฉด ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. NaN๊ฐ’์€ ์ž๊ธฐ ์ž์‹ ์„ ํฌํ•จํ•ด ๋‹ค๋ฅธ ์–ด๋– ํ•œ ๊ฐ’๊ณผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ž„์˜์˜ ๊ฐ’ x๊ฐ€ NaN์ธ์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” x !== x์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. NaN์€ ์ด ํ‘œํ˜„์‹์„ ์ฐธ์œผ๋กœ ๋งŒ๋“œ๋Š” ์œ ์ผํ•œ ๊ฐ’์ด๋‹ค.
โ€ข ๋‘ ๊ฐ’์ด ๋ชจ๋‘ ์ˆซ์ž๊ณ  ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š”๋‹ค๋ฉด, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•œ๋‹ค. ๋งŒ์•ฝ ํ•˜๋‚˜์˜ ๊ฐ’์ด 0์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜์˜ ๊ฐ’์ด -0์ผ์ง€๋ผ๋„, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•œ๋‹ค.
โ€ข ๋‘ ๊ฐ’์ด ๋ชจ๋‘ ๋ฌธ์ž์—ด์ด๊ณ , ๊ฐ™์€ ์œ„์น˜์— ์ •ํ™•ํžˆ ๊ฐ™์€ 16๋น„ํŠธ ๊ฐ’(3.2์ ˆ ์ฐธ๊ณ )์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋‚˜ ๋‚ด์šฉ์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ–๊ณ , ์œก์•ˆ์ƒ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ๊ฐ–๋”๋ผ๋„ 16๋น„ํŠธ ๊ฐ’์˜ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ์ธ์ฝ”๋”ฉ๋˜์–ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž์—ด์— ๋Œ€ํ•ด์„œ ์ •๊ทœํ™” ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ, ์ด๋Ÿฐ ๋ฌธ์ž์—ด๋“ค์€ === ๋‚˜ == ์—ฐ์‚ฐ์ž๋กœ๋Š” ๊ฐ™๋‹ค๊ณ  ํŒ์ •๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด์™€ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋ ค๋ฉด 3๋ถ€์—์„œ ๋‹ค๋ฃจ๋Š” String.localeCompare()๋ฅผ ์ฐธ๊ณ ํ•˜๋ผ.
โ€ข ๋‘ ๊ฐ’์ด ๋ชจ๋‘ ๊ฐ™์€ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฉด, ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•œ๋‹ค. ๋‘ ๊ฐ’์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•  ๊ฒฝ์šฐ์— ใ…… ใ…“ใ„น์‚ฌ ๋‘ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ผ์น˜ํ•˜๋”๋ผ๋„ ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค.

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

โ€ข ๋‘ ๊ฐ’์˜ ํƒ€์ž…์ด ๊ฐ™์€ ๊ฒฝ์šฐ, ๋‘ ๊ฐ’์ด ์ผ์น˜ํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธํ•œ๋‹ค. ๋งŒ์•ฝ ๋‘ ๊ฐ’์ด ์ผ์น˜ํ•  ๊ฒฝ์šฐ ๋‘ ๊ฐ’์€ ๋™์น˜๋‹ค. ํ•˜์ง€๋งŒ ๋‘ ๊ฐ’์ด ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‘ ๊ฐ’์€ ๋™์น˜๊ฐ€ ์•„๋‹ˆ๋‹ค.
โ€ข ๋‘ ๊ฐ’์˜ ํƒ€์ž…์ด ๋‹ค๋ฅผ ๊ฒฝ์šฐ๋ผ ํ• ์ง€๋ผ๋„ ๋™์น˜์ผ ์—ฌ์ง€๊ฐ€ ์žˆ๋‹ค. ๋™์น˜์ž„์„ ํ™•์ธํ•˜๋Š” ๊ณผ์ •์—์„œ ๋‹ค์Œ์— ๋‚˜์—ด๋œ ๊ทœ์น™๋“ค๊ณผ ํƒ€์ž… ๋ณ€ํ™˜์ด ์‚ฌ์šฉ๋œ๋‹ค.
  * ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๊ฐ€ null์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๊ฐ€ undefined๋ผ๋ฉด ๋‘ ๊ฐ’์€๋™๋“ฑํ•˜๋‹ค.
  * ํ•œ ๊ฐ’์ด ์ˆซ์ž์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด๋ฉด, ๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ์ด๋ฅผ ์‚ฌ์šฉํ•ด ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค.
  * ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๊ฐ€ true์ด๋ฉด ์ด๋ฅผ 1๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค. ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๊ฐ€ false์ด๋ฉด, ์ด๋ฅผ 0์œผ๋กœ
    ๋ณ€ํ™˜ํ•œ ํ›„ ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค.
  * ํ•œ ๊ฐ’์ด ๊ฐ์ฒด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์ˆซ์ž ๋˜๋Š” ๋ฌธ์ž์—ด์ด๋ฉด, ๊ฐ์ฒด๋ฅผ ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•œ ํ›„ ๋‹ค์‹œ ๋น„๊ต
    ํ•œ๋‹ค. ๊ฐ์ฒด๋ฅผ ์›์‹œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐ์—๋Š” ํ•ด๋‹น ๊ฐ์ฒด์˜ toString() ๋ฉ”์„œ๋“œ๋‚˜ valueOf() ๋ฉ”์„œ๋“œ๊ฐ€ ์‚ฌ์šฉ
    ๋œ๋‹ค. ์ฝ”์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์žฅ ํด๋ž˜์Šค์—์„œ๋Š” toString90 ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— valueOf() ๋ฉ”์„œ๋“œ
    ๋ฅผ ์‚ฌ์šฉํ•œ ๋ณ€ํ™˜์„ ๋จผ์ € ์‹œ๋„ํ•œ๋‹ค. ๋‹จ, Date ํด๋ž˜์Šค๋Š” ์˜ˆ์™ธ์ ์œผ๋กœ toString() ๋ณ€ํ™˜์„ ๋ฐ”๋กœ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฝ”
    ์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ์†ํ•˜์ง€ ์•Š์€ ๊ฐ์ฒด์—์„œ๋Š” ๊ฐ ๊ตฌํ˜„์—์„œ ์ •์˜ํ•œ ๋ฐฉ์‹์œผ๋กœ ์›์‹œ ๊ฐ’ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
  * ์•ž์—์„œ ์—ด๊ฑฐํ•˜์ง€ ์•Š์€ ๊ธฐํƒ€ ๊ฐ’๋“ค์˜ ์กฐํ•ฉ์€ ๋™์น˜๊ฐ€ ์•„๋‹ˆ๋‹ค.

๋™๋“ฑํ•จ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ์˜ˆ๋กœ ๋‹ค์Œ์˜ ๋น„๊ต์‹์„ ์‚ดํŽด๋ณด์ž.

"1" == true

์ด ํ‘œํ˜„์‹์€ true๊ฐ€ ๋œ๋‹ค. ๊ฒ‰๋ณด๊ธฐ์— ๋งค์šฐ ๋‹ค๋ฅธ ๊ฐ’๋“ค์ž„์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  ์‚ฌ์‹ค์€ ๋™๋“ฑํ•œ ๊ด€๊ณ„์ธ ๊ฒƒ์ด๋‹ค. ์ด ํ‘œํ˜„์‹์—์„œ๋Š” ๋จผ์ € ๋ถˆ๋ฆฌ์–ธ ๊ฐ’ true๊ฐ€ ์ˆซ์ž 1๋กœ ๋ณ€ํ™˜๋œํ›„ ๋‹ค์‹œ ๋น„๊ตํ•œ๋‹ค. ์ด์–ด์„œ ๋ฌธ์ž์—ด"1"์ด ์ˆซ์ž 1๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ์ด์ œ ๋‘ ์ˆซ์ž๋Š” ๊ฐ™์€ ์ˆซ์ž์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์‹์˜ ๊ฒฐ๊ณผ๋กœ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

4.9.2 ๋น„๊ต ์—ฐ์‚ฐ์ž

๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ๊ฐ’์˜ ์ƒ๋Œ€์ ์ธ ์ˆœ์„œ๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฐ ์“ฐ์ธ๋‹ค.

๋” ์ž‘๋‹ค (<)

< ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ํฌ๋ฉด true๋กœ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋กœ ํ‰๊ฐ€๋œ๋‹ค.

๋” ํฌ๋‹ค (>)

์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋‘๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ํฌ๋ฉด true๋กœ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋กœ ํ‰๊ฐ€๋œ๋‹ค.

์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค ( <= )

<= ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด true๋กœ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋กœ ํ‰๊ฐ€๋œ
๋‹ค.

ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค ( >= )

= ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด true๋กœ, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋กœ ํ‰๊ฐ€๋œ

 ๋‹ค.

๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ํ”ผ์—ฐ์‚ฐ์ž ํƒ€์ž…์— ์ œํ•œ์ด ์—†๋‹ค. ํ•˜์ง€๋งŒ ์˜ค์ง ์ˆซ์ž์™€ ๋ฌธ์ž์—ด๋งŒ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ๋จผ์ € ๋ณ€ํ™˜๋œ๋‹ค. ๋น„๊ต์™€ ๋ณ€ํ™˜์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์–ด๋‚œ๋‹ค.

โ€ข ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ์–ด๋А ํ•˜๋‚˜๊ฐ€ ๊ฐ์ฒด๋กœ ํ‰๊ฐ€๋˜๋ฉด, 3.8.3์—์„œ ์‚ดํŽด๋ดค๋“ฏ์ด ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ์›์‹œ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š”๋ฐ, ์ด ๊ณผ์ •์—์„œ valueOf() ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜๊ฐ’์ด ์›์‹œ ํƒ€์ž…์ด๋ฉด ๊ทธ ๊ฐ’์„ ์ด์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” toString() ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์ด์šฉํ•œ๋‹ค.
โ€ข ๊ฐ์ฒด๊ฐ€ ์›์‹œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋œ ํ›„์— ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋ชจ๋‘ ๋ฌธ์ž์—ด์ด๋ผ๋ฉด '์•ŒํŒŒ๋ฒณ ์ˆœ์„œ'๋Œ€๋กœ ๋‘ ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๊ฒŒ ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ '์•ŒํŒŒ๋ฒณ ์ˆœ์„œ'๋ž€ ๋ฌธ์ž์—ด์„ ๊ตฌ์„ฑํ•˜๋Š” 16๋น„ํŠธ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์˜ ์ˆœ์„œ๋ฅผ ๋งํ•œ๋‹ค.
โ€ข ๊ฐ์ฒด๊ฐ€ ์›์‹œ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜๋œ ํ›„์— ์ตœ์†Œํ•œ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋ฉด, ํ”ผ์—ฐ์‚ฐ์ž ๋ชจ๋‘ ์ˆซ์ž๋กœ ๋ณ€ํ™˜๋œ ํ›„ ๊ฐ’์„ ๋น„๊ตํ•˜๊ฒŒ ๋œ๋‹ค. 0๊ณผ -0์€ ์˜๋ฏธ์ƒ ๋™์ผํ•˜๋‹ค. ์–‘์˜ ๋ฌดํ•œ๋Œ€๋Š” ์–‘์˜ ๋ฌดํ•œ๋Œ€๊ฐ€ ์•„๋‹Œ ์–ด๋–ค ์ˆ˜๋ณด๋‹ค ํฌ๊ณ , ์Œ์˜ ๋ฌดํ•œ๋Œ€๋Š” ์Œ์˜ ๋ฌดํ•œ๋Œ€๊ฐ€ ์•„๋‹Œ ์–ด๋–ค ์ˆ˜๋ณด๋‹ค ์ž‘๋‹ค. ๋‘˜ ์ค‘์˜ ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ NaN์ด๊ฑฐ๋‚˜ NaN์œผ๋กœ ๋ณ€ํ™˜๋œ๋‹ค๋ฉด ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์–ธ์ œ๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ์ž์—ด์€ 16๋น„ํŠธ ์ •์ˆ˜ ๊ฐ’๋“ค์˜ ๋‚˜์—ด์ด๊ณ , ๋ฌธ์ž์—ด ๋น„๊ต๋Š” ๋‹จ์ˆœํžˆ ๋‘ ๋ฌธ์ž์—ด์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฐ ๋ฌธ์ž์— ํ•ด๋‹นํ•˜๋Š” ์ˆซ์ž ๊ฐ’์˜ ๋น„๊ต๋ผ๋Š” ์ ์„ ์œ ๋…ํ•ด์•ผ ํ•œ๋‹ค. ์œ ๋‹ˆ์ฝ”๋“œ์— ์˜ํ•ด ์ •์˜๋œ ์ˆซ์ž ์ธ์ฝ”๋”ฉ ์ˆœ์„œ๋Š” ์–ด๋–ค ํŠน์ • ์–ธ์–ด๋‚˜ ๋กœ์ผ€์ผ(locale)์— ์‚ฌ์šฉ๋˜๋Š” ๊ณ ์œ  ๋ฌธ์ž์˜ ์กฐํ•ฉ๊ณผ ์ˆœ์„œ๊ฐ€ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ, ๋ฌธ์ž์—ด ๋น„๊ต๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค๋Š” ์ ์„ ์—ผ๋‘์— ๋‘์–ด์•ผ ํ•˜๋Š”๋ฐ, ๋ชจ๋“  ASCII ๋Œ€๋ฌธ์ž๋Š” ๋ชจ๋“  ASCII ์†Œ๋ฌธ์ž๋ณด๋‹ค '์ž‘๋‹ค'. ์ด ์ ์„ ๋ฏธ๋ฆฌ ์•Œ์ง€ ๋ชปํ•˜๋ฉด ๋ฌธ์ž์—ด ๋น„๊ต ๊ฒฐ๊ณผ์— ํ˜ผ๋ž€์„ ๊ฒช์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด < ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ๋ฌธ์ž์—ด "Zoo"๋Š” ๋ฌธ์ž์—ด "aardvark"๋ณด๋‹ค ์ž‘๋‹ค.

๋กœ์ผ€์ผ ์ฐจ์ด์—์„œ ์˜ค๋Š” ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ ์ฐจ์ด ๋“ฑ์˜ ๋ฌธ์ œ๊นŒ์ง€ ๊ณ ๋ คํ•˜๋Š”, ์ข€ ๋” ๊ฒฌ๊ณ ํ•œ ๋ฌธ์ž์—ด ๋น„๊ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ String.localeCompare() ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š๊ณ  ๋ฌธ์ž์—ด์„ ๋น„๊ตํ•˜๋ ค๋ฉด, ์šฐ์„  String.toLowerCase()๋‚˜ String.toUpperCase() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋น„๊ตํ•  ๋ฌธ์ž์—ด์„ ์ „๋ถ€ ์†Œ๋ฌธ์ž๋‚˜ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ•œ๋‹ค.

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

1 + 2 // ๋ง์…ˆ. ๊ฒฐ๊ณผ๋Š” 3 "1" + "2" // ๊ฒฐ๊ณผ๋Š” '12' "1" + 2 // 2๊ฐ€ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋˜๊ณ , ๊ฒฐ๊ณผ๋Š” '12' 11 < 3 // ์ˆซ์ž ๋น„๊ต. ๊ฒฐ๊ณผ๋Š” false "11" < "3" // ์ˆซ์ž ๋น„๊ต. '11'์ด ์ˆซ์ž 11๋กœ ๋ณ€ํ™˜๋˜๊ณ , ๊ฒฐ๊ณผ๋Š” false. "11" < 3 // ์ˆซ์ž ๋น„๊ต. ๊ฒฐ๊ณผ๋Š” false "one" < 3 // ์ˆซ์ž ๋น„๊ต. 'one'์ด NaN์œผ๋กœ ๋ณ€ํ™˜๋˜๊ณ , ๊ฒฐ๊ณผ๋Š” false.

๋งˆ์ง€๋ง‰์œผ๋กœ, <= ์—ฐ์‚ฐ์ž(๋” ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค)์™€ >= ์—ฐ์‚ฐ์ž( ๋” ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค)๋Š” ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€ ํŒ๋‹จํ•  ๋–„, ๋™์น˜ ์—ฐ์‚ฐ์ž์˜ ํž˜์„ ๋นŒ๋ฆฌ์ง€ ์•Š๋Š”๋‹ค. ๊ทธ ๋Œ€์‹ , '๋” ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค' ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ˆœํžˆ 'ํฌ์ง€ ์•Š๋‹ค'๋กœ ์ •์˜๋˜๋ฉฐ, '๋” ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค' ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ˆœํžˆ '์ž‘์ง€ ์•Š๋‹ค'๋กœ ์ •์˜๋œ๋‹ค. ๋‹จ ํ•œ ๊ฐ€์ง€ ์˜ˆ์™ธ๊ฐ€ ์žˆ๋Š”๋ฐ, ๋‘ ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜๊ฐ€ NaN์ด๋ฉด (๋˜๋Š” NaN์œผ๋กœ ๋ณ€ํ™˜๋˜๋ฉด) ๋„ค ์ข…๋ฅ˜์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž ๋ชจ๋‘ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

4.9.3 in ์—ฐ์‚ฐ์ž

in ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋ฌธ์ž์—ด(๋˜๋Š” ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ)์„ ๋ฐ›๋Š”๋‹ค. ์šฐ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ๋Š” ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ๋ฐ›๋Š”๋‹ค. ์ขŒ๋ณ€ ๊ฐ’์ด ์šฐ๋ณ€ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์— ํ•ด๋‹นํ•  ๊ฒฝ์šฐ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” true๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

var point = { x : 1, y : 1 } ; // ๊ฐ์ฒด ์ •์˜ "x" in point // => true: ํ”„๋กœํผํ‹ฐ x๊ฐ€ ์žˆ๋‹ค. "z" in point // => false: ํ”„๋กœํผํ‹ฐ z๊ฐ€ ์—†๋‹ค. "toString" in point // => true: ์ƒ์†๋œ ํ”„๋กœํผํ‹ฐ var data = [7,8,9]; // ์›์†Œ๊ฐ€ 0, 1, 2 ์œ„์น˜์— ์ฐจ๋ก€๋กœ 7, 8, 9 "0" in data // => true: ๋ฐฐ์—ด์— 0๋ฒˆ์งธ ์›์†Œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ 1 in data // => true: ๋ฐฐ์—ด์— 1๋ฒˆ์งธ ์›์†Œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ 3 in data // => false: ๋ฐฐ์—ด์— 3๋ฒˆ์งธ ์›์†Œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ

4.9.4 instanceof ์—ฐ์‚ฐ์ž

instanceof ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ฐ์ฒด๋ฅผ, ์šฐ๋ณ€์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๊ฐ์ฒด ํด๋ž˜์Šค์˜ ์ด๋ฆ„์„ ์‹๋ณ„์ž๋กœ ๋ฐ›๋Š”๋‹ค. ์ขŒ๋ณ€์— ์˜ค๋Š” ๊ฐ์ฒด๊ฐ€ ์šฐ๋ณ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ผ ๊ฒฝ์šฐ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋Š” true๋กœ ํ‰๊ฐ€๋˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” false๋กœ ํ‰๊ฐ€๋œ๋‹ค. 9์žฅ์—์„œ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด์˜ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋กœ๋ถ€ํ„ฐ ์ •์˜๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ instanceof์˜ ์šฐ๋ณ€ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ํ•จ์ˆ˜๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ์‚ดํŽด๋ณด์ž.

var d = new Date(); // Date() ์ƒ์„ฑ์ž๋กœ ์ƒˆ๋กœ์šด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. d instanceof Date; // => true: d๋Š” Date()์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค. d instanceof Object; // => true: ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object์˜ ์ธ์Šคํ„ด์Šค. d instanceof Number; // => false: d๋Š” Number์˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋‹ค. var a = [1, 2, 3]; // ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ๋ฒ•์œผ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค. d instanceof Array; // => true: a๋Š” ๋ฐฐ์—ด์ด๋‹ค. d instanceof Object; // => true: ๋ชจ๋“  ๋ฐฐ์—ด์€ ๊ฐ์ฒด๋‹ค. d instanceof RegExp; // => false: ๋ฐฐ์—ด์€ ์ •๊ทœ ํ‘œํ˜„์‹์ด ์•„๋‹ˆ๋‹ค.

๋ชจ๋“  ๊ฐ์ฒด๋Š” Object์˜ ์ธ์Šคํ„ด์Šค๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์ž. instanceof๋กœ ๊ฐ์ฒด๊ฐ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํŒ๋‹จํ•  ๋•Œ๋Š” ํ•ด๋‹น ๊ฐ์ฒด์˜ '์ƒ์œ„ ํด๋ž˜์Šค'๋“ค๋„ ๊ณ ๋ คํ•˜๊ฒŒ ๋œ๋‹ค. ๋งŒ์ผ instanceof ์˜ ์ขŒ๋ณ€ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ฉด, instanceof ์˜ ๊ฒฐ๊ณผ๋Š” false๋‹ค. ๋˜ํ•œ ์šฐ๋ณ€ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด TypeError ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

instanceof ์—ฐ์‚ฐ์ž๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 'ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ'์„ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ƒ์† ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ 6.2.2์—์„œ ์ƒ์„ธํžˆ ๋‹ค๋ฃฌ๋‹ค. o instanceof f ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” f.prototype์„ ํ‰๊ฐ€ํ•œ ํ›„, o์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์— ๊ทธ ๊ฐ’์ด ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ๊ฒ€์ƒ‰ํ•œ๋‹ค. ๋งŒ์ผ o์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์—์„œ f.prototype ๊ฐ’์ด ๋ฐœ๊ฒฌ๋˜๋ฉด o๋Š” f์˜ ์ธ์Šคํ„ด์Šค(๋˜๋Š” f์˜ ํ•˜์œ„ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค)๊ฐ€ ๋˜๊ณ , ํ‘œํ˜„์‹์€ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋งŒ์ผ o์˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ์—์„œ f.prototype ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด o๋Š” f์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๊ณ , ํ‘œํ˜„์‹์€ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

4.10 ๋…ผ๋ฆฌ ํ‘œํ˜„์‹

๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž &&, ||, ! ์€ ๋ถˆ๋ฆฌ์–ธ ๋Œ€์ˆ˜(Boolean algebra)๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ์ข…์ข… ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ๋˜์–ด ๋‘˜ ์ด์ƒ์˜ ๋ณ€์ˆ˜๊ฐ€ ๊ด€๊ณ„๋˜๋Š” ๋ณต์žกํ•œ ํ‘œํ˜„์‹์„ ํ‘œํ˜„ํ•˜๊ธฐ๋„ ํ•œ๋‹ค. ๊ฐ ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ์„ธ๋ถ€ ํ•ญ๋ชฉ์—์„œ ์‚ดํŽด๋ณผ ๊ฒƒ์ด๋‹ค. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋ฅผ ์˜จ์ „ํžˆ ์ดํ•ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 3.3์ ˆ์—์„œ ์„ค๋ช…ํ•œ '์ฐธ์ด ๋˜๋Š”(truthy) ํ‘œํ˜„์‹' ๊ณผ '๊ฑฐ์ง“์ด ๋˜๋Š”(falsy) ํ‘œํ˜„์‹'์˜ ๊ฐœ๋…์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ์‚ดํŽด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

4.10.1 ๋…ผ๋ฆฌ AND ( && )

&& ์—ฐ์‚ฐ์ž๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ์ˆ˜์ค€์—์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ค€์€ ์•„์ฃผ ๋‹จ์ˆœํ•œ ๊ฒƒ์œผ๋กœ, ์—ฐ์‚ฐ์ž๊ฐ€ ๋ถˆ๋ฆฌ์–ธ ํ”ผ์—ฐ์‚ฐ์ž์— ๋Œ€ํ•ด ์“ฐ์ผ ๊ฒฝ์šฐ์—๋Š” ๋‘ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ’์— ๋Œ€ํ•œ ๋ถˆ๋ฆฌ์–ธ AND๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์™€ ๋‘ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ '๋ชจ๋‘' true์ผ ๊ฒฝ์šฐ์—๋งŒ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋กœ true๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ ์–ด๋„ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false๋ผ๋ฉด ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋กœ false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. && ๋Š” ์ข…์ข… ๋‘ ๊ด€๊ณ„ ํ‘œํ˜„์‹์˜ ์ ‘์†์‚ฌ (conjunction)๋กœ๋„ ์“ฐ์ธ๋‹ค.

x == 0 && y == 0 // x์™€ y๊ฐ€ ๋ชจ๋‘ 0์ด๋ฉด ์ฐธ์ด ๋œ๋‹ค.

๊ด€๊ณ„ ํ‘œํ˜„์‹์€ ํ•ญ์ƒ true๋‚˜ false๋กœ ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์œ„์™€ ๊ฐ™์ด &&๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•ญ์ƒ true๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž๋Š” && ์™€ || ๋ณด๋‹ค ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’๊ธฐ ๋–„๋ฌธ์—, ์œ„์™€ ๊ฐ™์€ ํ‘œํ˜„์‹์€ ๊ด„ํ˜ธ ์—†์ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ && ์—ฐ์‚ฐ์ž์˜ ํ”ผ์—ฐ์‚ฐ์ž๋กœ ๋ฐ˜๋“œ์‹œ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์ด ์˜ฌ ํ•„์š”๋Š” ์—†๋‹ค. ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ’์€ true๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜(truthy) false๋กœ ํ‰๊ฐ€๋  ์ˆ˜ ์žˆ์Œ(falsy)์„ ์ƒ๊ธฐํ•˜์ž(3.3์ ˆ์—์„œ ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ณ ์žˆ๋‹ค. false๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’์€ false, null, undefined, 0, -0, NaN, ''(๋นˆ๋ฌธ์ž์—ด)์ด๋‹ค. ๊ฐ์ฒด๋ฅผ ๋น„๋กฏํ•œ ์ด ์™ธ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ฐ’์€ true๋กœ ํ‰๊ฐ€๋œ๋‹ค).

&& ์—ฐ์‚ฐ์ž๋ฅผ ์ดํ•ดํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์€ true๋‚˜ false๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’๋“ค์„ ์œ„ํ•œ ๋ถˆ๋ฆฌ์–ธ AND ์—ฐ์‚ฐ์ž๋กœ์จ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž ๋ชจ๋‘ true๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’์ด๋ฉด, && ์—ฐ์‚ฐ์ž๋Š” true๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์ ์–ด๋„ ํ•˜๋‚˜์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ false๋กœ ํ‰๊ฐ€๋  ๊ฒฝ์šฐ์—๋Š” false๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์„ ์š”๊ตฌํ•˜๋Š” ํ‘œํ˜„์‹์ด๋‚˜ ๊ตฌ๋ฌธ์€ 'truthy'ํ•œ ๊ฐ’์ด๋‚˜ 'falsy'ํ•œ ๊ฐ’๊ณผ๋„ ์ž˜ ๋™์ž‘ํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ &&๊ฐ€ ํ•ญ์ƒ true๋‚˜ false๋ฅผ ๋ฐ˜ํ™˜ ํ•˜์ง„ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์ด ์‹ค์งˆ์ ์ธ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค์ง€๋Š” ์•Š๋Š”๋‹ค.

์ง€๊ธˆ๊นŒ์ง€ && ์—ฐ์‚ฐ์ž๊ฐ€ 'true๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’' ๋˜๋Š” 'false๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฐ’'์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๊ณ  ํ–ˆ๋Š”๋ฐ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฐ’์„ ๋งํ•˜๋Š”์ง€ ์„ค๋ช…ํ•˜์ง€ ์•Š์•˜๋‹ค. ๊ทธ๋ž˜์„œ && ์—ฐ์‚ฐ์ž๋ฅผ ์ดํ•ดํ•˜๋Š” ์„ธ ๋ฒˆ์งธ ์ˆ˜์ค€์˜ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ด์•ผ ํ•œ๋‹ค. && ์—ฐ์‚ฐ์ž๋Š” ์ขŒ๋ณ€์— ์žˆ๋Š” ์ฒซ ๋ฒˆ์งธ ํ”ผ์—ฐ์‚ฐ์ž์ธ ํ‘œํ˜„์‹์„ ๋จผ์ € ํ‰๊ฐ€ํ•œ๋‹ค. ์ขŒ๋ณ€์˜ ๊ฐ’์ด 'falsy'๋ฉด, ์ „์ฒด ํ‘œํ˜„์‹์˜ ๊ฐ’ ์—ญ์‹œ 'falsy'์—ฌ์•ผ ํ•˜๋ฏ€๋กœ, ๋‹จ์ˆœํžˆ ์ขŒ๋ณ€์˜ 'falsy'๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์šฐ๋ณ€์˜ ํ‘œํ˜„์‹์€ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋ฐ˜๋Œ€๋กœ, ๋งŒ์•ฝ ์ขŒ๋ณ€์˜ ๊ฐ’์ด 'truthy'๋ฉด ์ „์ฒด ํ‘œํ˜„์‹์˜ ๊ฐ’์€ ์šฐ๋ณ€ ๊ฐ’์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ์šฐ๋ณ€์˜ ๊ฐ’์ด 'truthy'๋ฉด ์ „์ฒด ํ‘œํ˜„์‹์˜ ๊ฐ’๋„ 'truthy'๊ณ , ๋งŒ์•ฝ ์šฐ๋ณ€์˜ ๊ฐ’์ด 'falsy'๋ฉด ์ „์ฒด ํ‘œํ˜„์‹์˜ ๊ฐ’๋„ 'falsy'๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ขŒ๋ณ€์˜ ๊ฐ’์ด 'truthy'๋ฉด && ์—ฐ์‚ฐ์ž๋Š” ํ•ญ์ƒ ์šฐ๋ณ€์˜ ๊ฐ’์„ ํ‰๊ฐ€ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•œ๋‹ค.

var o = { x : 1 }; var p = null; o && o.x // => 1: o๊ฐ€ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— o.x๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. p && p.x // => null: p๊ฐ€ null์ด๊ธฐ ๋•Œ๋ฌธ์— p.x๋ฅผ ํ‰๊ฐ€ํ•˜์ง€ ์•Š๊ณ  null์„ ๋ฐ˜ํ™˜

์—ฌ๊ธฐ์„œ &&๊ฐ€ ์šฐ๋ณ€ ํ‘œํ˜„์‹์„ ํ‰๊ฐ€ํ•  ์ˆ˜๋„, ๋˜๋Š” ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ์ ์„ ์ดํ•ดํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ์ด ์ฝ”๋“œ์—์„œ ๋ณ€์ˆ˜ p๋Š” null์ด๊ธฐ ๋•Œ๋ฌธ์— ํ‘œํ˜„์‹ p.x๊ฐ€ ํ‰๊ฐ€๋˜๋ฉด TypeError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” && ์—ฐ์‚ฐ์ž๋Š” p๋ฅผ ๋จผ์ € ํ‰๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ํ‘œํ˜„์‹ p.x๋Š” ๋ฐ˜๋“œ์‹œ p๊ฐ€ true๋กœ ํ‰๊ฐ€๋  ๋•Œ๋งŒ(๊ฐ’์ด null์ด๋‚˜ undefined๊ฐ€ ์•„๋‹ ๋•Œ) ์‹คํ–‰๋œ๋‹ค. ์ด์™€ ๊ฐ™์€ && ์—ฐ์‚ฐ์ž์˜ ํŠน์„ฑ์„ '๋‹จ์ถ• ํ‰๊ฐ€(short circuiting)'๋ผ๊ณ  ๋ถ€๋ฅด๊ณ , ์ด์™€ ๊ฐ™์€ ํŠน์„ฑ์„ ์ผ๋ถ€๋Ÿฌ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ข…์ข… ๋ณด๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ ๋‘ ์ค„์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋Š” ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.

if ( a == b) stop(); // a == b๋ฅผ ๋งŒ์กฑํ•  ๋•Œ๋งŒ stop() ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ( a == b ) && stop(); // ์ž‘๋™์€ ์œ„์™€ ๊ฐ™๋‹ค.

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

4.10.2 ๋…ผ๋ฆฌ OT ( || )