๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
javascript/๐Ÿ“– study

[2์ฃผ์ฐจ ์Šคํ„ฐ๋””]11์žฅ-์›์‹œ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ๋น„๊ต

by HomieKim 2022. 2. 6.

์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ๋น„๊ต

  • ์›์‹œ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’
  • ๊ฐ์ฒด๋Š” ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’
  • ์›์‹œ ๊ฐ’์„ ๋ณ€์ˆ˜์— ํ• ๋‹น ํ•˜๋ฉด ์‹ค์ œ ๊ฐ’์ด ์ €์žฅ
  • ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ์ฐธ์กฐ ๊ฐ’์ด ์ €์žฅ์›์‹œ๊ฐ’์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹น ์‹œ ์›์‹œ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ(pass by value)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ์›๋ณธ์˜ **์ฐธ์กฐ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ
    ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ(pass by value) ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์›์‹œ ๊ฐ’

๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’

  • ์›์‹œ ๊ฐ’์€ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ ํ•œ ๊ฐ’์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅ
  • ์žฌํ• ๋‹น ์‹œ ์ด์ „์˜ ์›์‹œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜๊ฐ€ ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ์ฃผ์†Œ๋ฅผ ์ฐธ์กฐํ•จ
  • const๋Š” ๋ณ€์ˆ˜์˜ ์žฌํ• ๋‹น์„ ๋ง‰๋Š” ๊ฒƒ, ์›์‹œ ๊ฐ’ ์ž์ฒด๋Š” ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ ์•„๋‹˜๋ฌธ์ž์—ด๊ณผ ๋ถˆ๋ณ€์„ฑ
  • ์›์‹œ ํƒ€์ž…๋ณ„๋กœ ํ™•๋ณดํ•ด์•ผ ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๋ฏธ๋ฆฌ ์ •ํ•ด์ ธ ์žˆ๋‹ค.
  • ๋ฌธ์ž์—ด ์›์‹œ๊ฐ’ ๊ฒฝ์šฐ ๋ช‡๊ฐœ์˜ ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด ์กŒ๋Š”๋ƒ์— ๋”ฐ๋ผ ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๊ฐ€ ๊ฒฐ์ • ๋จ
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ฌธ์ž์—ด์„ ์›์‹œ ํƒ€์ž…์œผ๋กœ ์ œ๊ณต(c๋Š” ๋ฌธ์ž์˜ ๋ฐฐ์—ด๋กœ ์ฒ˜๋ฆฌ java๋Š” String๊ฐ์ฒด๋กœ ์ฒ˜๋ฆฌ)
  • ๋ฌธ์ž์—ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด ์ด๋ฉด์„œ ์ดํ„ฐ๋Ÿฌ๋ธ” ์ด๋ฏ€๋กœ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ๊ฐ ๋ฌธ์ž์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ๋‹ค.
var str = 'string';

// ๋ฌธ์ž์—ด์€ ์œ ์‚ฌ ๋ฐฐ์—ด์ด๋ฏ€๋กœ ๋ฐฐ์—ด๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ ๋ฌธ์ž์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
console.log(str[0]); // s

// ์›์‹œ ๊ฐ’์ธ ๋ฌธ์ž์—ด์ด ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋™์ž‘ํ•œ๋‹ค.
console.log(str.length); // 6
console.log(str.toUpperCase()); // STRING
str[0] ='S' // ์ƒ์„ฑ๋œ ๋ฌธ์ž์—ด ์ผ๋ถ€๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฑด ๋ฐ˜์˜๋˜์ง€  ์•Š๋Š”๋‹ค (์›์‹œ๊ฐ’์€ ๋ถˆ๋ณ€์„ฑ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ)

๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ

  • ๋ณ€์ˆ˜์— ์›์‹œ ๊ฐ’์„ ๊ฐ–๋Š” ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ ๋œ๋‹ค
  • ๋ณต์‚ฌ๋œ ์›์‹œ ๊ฐ’๋งŒ ๊ฐ™์„ ๋ฟ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋œ ๋ณ„๊ฐœ์˜ ๊ฐ’์œผ๋กœ ์กด์žฌ
  • ์—„๊ฒฉํ•˜๊ฒŒ ๋”ฐ์ง€๋ฉด ๋ณ€์ˆ˜์—๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ ๊ฐ€ ์ „๋‹ฌ๋จ

๊ฐ์ฒด

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

๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ ๊ฐ’

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

์ฐธ์กฐ์— ์˜ํ•œ ์ „๋‹ฌ

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

๋Œ“๊ธ€