๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Programming/Javascript

[์ธ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ์—ฐ์‚ฐ์ž 2 - ์ฐธ์กฐ ํƒ€์ž…์˜ ํŠน์„ฑ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ธฐ๋ณธ ํƒ€์ž…์„ ์ œ์™ธํ•œ ๋ชจ๋“  ๊ฐ’์€ ๊ฐ์ฒด์ด๋‹ค. ๋ฐฐ์—ด์ด๋‚˜ ํ•จ์ˆ˜ ๋˜ํ•œ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋Ÿฌํ•œ ๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฐธ์กฐ ํƒ€์ž…์ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๊ฒƒ์€ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์—ฐ์‚ฐ์ด ์‹ค์ œ ๊ฐ’์ด ์•„๋‹Œ ์ฐธ์กฐ๊ฐ’์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

 

  1. objA ๊ฐ์ฒด๋ฅผ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ๋ฐฉ์‹์œผ๋กœ ์ƒ์„ฑํ–ˆ๋‹ค. ์—ฌ๊ธฐ์„œ objA ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด ์ž์ฒด๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋‹ค.
  2. ๋ณ€์ˆ˜ objB์— objA ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค. objA๋Š” 1๋ฒˆ์—์„œ ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋ณ€์ˆ˜ objB์—๋„ ์ด๊ฐ™์€ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๊ฐ’์ด ์ €์žฅ๋œ๋‹ค. 
  3. ๋ณ€์ˆ˜ objB๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด์˜ val ๊ฐ’์„ 40์—์„œ 50์œผ๋กœ ๊ฐฑ์‹ ํ–ˆ๋‹ค. ์ด ๋•Œ objA๋„ ๋ณ€์ˆ˜ objB์™€ ๋™์ผํ•œ ๊ฐ์ฒด๋ฅผ ใ…Š๋งˆ์กฐํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ a.val ๊ฐ’์ด 50์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฐ์ฒด ๋น„๊ต

๋™๋“ฑ ์—ฐ์‚ฐ์ž(==)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•  ๋•Œ๋„ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๊ฐ’์ด ์•„๋‹Œ ์ฐธ์กฐ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค๋Š” ๊ฒƒ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

 

 

  1. a์™€ b๋Š” ์ˆซ์ž 100์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋‹ค. ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ๋™๋“ฑ ์—ฐ์‚ฐ์ž(==)๋ฅผ ์ด์šฉํ•ด์„œ ๋น„๊ตํ•  ๋•Œ ๊ฐ’์„ ๋น„๊ตํ•œ๋‹ค. ๋‘ ๋ณ€์ˆ˜ ๋ชจ๋‘ 100์ด๋ผ๋Š” ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ a==b์˜ ๊ฒฐ๊ณผ๋Š” true๊ฐ€ ๋œ๋‹ค.
  2. objA์™€ objB๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด์ง€๋งŒ, ๊ฐ™์€ ํ˜•ํƒœ์˜ ํ”„๋กœํผํ‹ฐ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋™๋“ฑ ์—ฐ์‚ฐ์ž(==)๋กœ ๋‘ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” false๊ฐ€ ๋œ๋‹ค. ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ’ ์ž์ฒด๋ฅผ ๋น„๊ตํ•ด์„œ ์ผ์น˜ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜์ง€๋งŒ, ๊ฐ์ฒด์™€ ๊ฐ™์€ ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ์ฐธ์กฐ๊ฐ’์ด ๊ฐ™์•„์•ผ true๊ฐ€ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด objB์™€ objC๋Š” ๊ฐ™์€ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜๋ฏ€๋กœ ๋™๋“ฑ ์—ฐ์‚ฐ์ž(==) ๊ฒฐ๊ณผ๊ฐ€ true๊ฐ€ ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์ฐธ์กฐ์— ์˜ํ•œ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹

๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹๋„ ๋‹ค๋ฅด๋‹ค. ๊ธฐ๋ณธ ํƒ€์ž…์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ’์— ์˜ํ•œ ํ˜ธ์ถœ(Call by value) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. 

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

์ด์— ๋ฐ˜ํ•ด, ๊ฐ์ฒด์™€ ๊ฐ™์€ ์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ฐธ์กฐ์— ์˜ํ•œ ํ˜ธ์ถœ(Call by reference) ๋ฐฉ์‹์œผ๋กœ ๋™์ž‘ํ•œ๋‹ค. 

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