๐ŸŒ™ 13์ผ์ฐจ - [ javascript ] ํ•ต์‹ฌ ๊ฐœ๋…๊ณผ ์ฃผ์š” ๋ฌธ๋ฒ• -

์œค2ยท2023๋…„ 3์›” 2์ผ
1

์˜ค๋Š˜ ๋ฐฐ์šด ๋‚ด์šฉ์€

  1. ์›์‹œ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ์ž๋ฃŒํ˜•

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


์›์‹œ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ์ž๋ฃŒํ˜•

โœ๏ธ ์ฐธ์กฐ ์ž๋ฃŒํ˜•

  • ์›์‹œ ์ž๋ฃŒํ˜• (primitive data type) : number, string, boolean ๋“ฑ

    // ์›์‹œ ์ž๋ฃŒํ˜•(primitive type): number, string, boolean, undefined, null
    42, 'string', true, undefined, null

  • ์ฐธ์กฐ ์ž๋ฃŒํ˜• (reference data type) : ๋ฐฐ์—ด, ๊ฐ์ฒด, ํ•จ์ˆ˜ ๋“ฑ

    // ์ฐธ์กฐ ์ž๋ฃŒํ˜•(reference type)
    [0, 1, 2] // ๋ฐฐ์—ด
    {name: 'kimcoding', age: 45} // ๊ฐ์ฒด
    function sum (x, y) { return x + y } // ํ•จ์ˆ˜

โœ๏ธ ์–•์€ ๋ณต์‚ฌ, ๊นŠ์€ ๋ณต์‚ฌ

  • ์›์‹œ ์ž๋ฃŒํ˜• : ํ• ๋‹นํ•œ ๋ณ€์ˆ˜๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋ฉด ๊ฐ’ ์ž์ฒด์˜ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค. (๊ฐ’ ์ž์ฒด๊ฐ€ ๋ณต์‚ฌ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด๋„ ๋‹ค๋ฅธ ํ•˜๋‚˜์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ)

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

๐Ÿ’ก ์–•์€ ๋ณต์‚ฌ ) ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ ์ค‘ ํ•œ ๋‹จ๊ณ„๊นŒ์ง€๋งŒ ๋ณต์‚ฌ
Object.assign, slice , spread syntax๋ฌธ๋ฒ• ๋“ฑ๊ณผ ๊ฐ™์€ ๊ธฐ์กด ๋ฐฐ์—ด์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋งŒ๋“  ๊ฒƒ์„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ์ €์žฅํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ฃผ์†Œ ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

์œ„์˜ ํ•จ์ˆ˜,๋ฌธ๋ฒ•์„ ์ ์šฉํ•ด๋„ ๋ณต์‚ฌ๊ฐ€ ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ : ์ฐธ์กฐ ์ž๋ฃŒํ˜• ๋‚ด๋ถ€์— ์ฐธ์กฐ ์ž๋ฃŒํ˜•์ด ์ค‘์ฒฉ๋œ ๊ตฌ์กฐ๋Š” ๋ณต์‚ฌํ•  ์ˆ˜ ์—†๋‹ค.

๐Ÿ’ก ๊นŠ์€ ๋ณต์‚ฌ ) ์ฐธ์กฐ ์ž๋ฃŒํ˜• ๋‚ด๋ถ€์— ์ค‘์ฒฉ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ // javascript ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค๋ฅธ ๋ฌธ๋ฒ•์„ ์‘์šฉํ•˜๋ฉด ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ณผ ์ˆ˜ ์žˆ์Œ
๋‹ค๋ฅธ ๋ฌธ๋ฒ• : JSON.stringify()์™€ JSON.parse()
1. JSON.stringify()๋Š” ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
2. JSON.parse()๋Š” ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
++ ๋จผ์ € ์ค‘์ฒฉ๋œ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ JSON.stringify()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์˜ ํ˜•ํƒœ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ , ๋ฐ˜ํ™˜๋œ ๊ฐ’์— ๋‹ค์‹œ JSON.parse()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด, ๊นŠ์€ ๋ณต์‚ฌ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ฐ˜ํ™˜
์˜ˆ์‹œ )
const arr = [1, 2, [3, 4]];
const copiedArr = JSON.parse(JSON.stringify(arr));

์œ„์˜ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์•ˆ๋˜๋Š” ์˜ˆ์™ธ์˜ ๊ฒฝ์šฐ )
์™„์ „ํ•œ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ๋ฐ˜๋“œ์‹œ ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, node.js ํ™˜๊ฒฝ์—์„œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ lodash, ๋˜๋Š” ramda๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

โœ๏ธ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ (garbage collector) :

  • JavaScript ์—”์ง„์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.
    ์ด๊ฒƒ์„ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ๊ฐ€ ์–ด๋Š ์‹œ์ ์— ์ง„ํ–‰๋˜๋Š”์ง€๋Š” ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค.

    let num = 20;
    num = 30
    => console.log(num) => 30
    ์ด์ฒ˜๋Ÿผ num์— 30์„ ์žฌํ• ๋‹น ํ•˜๋ฉด, ๋‚จ์•„์žˆ๋˜ 20์€ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ์— ์˜ํ•ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„
    ์ž๋™์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.

profile
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๊ณต๋ถ€์ค‘

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