μλ°μ€ν¬λ¦½νΈμ νμ μ ν¬κ² 2κ°μ§λ‘ λλ©λλ€. κΈ°λ³Έν λ°μ΄ν°(Primitive) μ μ°Έμ‘°ν λ°μ΄ν°(Reference) μ λλ€.
κΈ°λ³Έν λ°μ΄ν°μλ string, number, bigint, boolean, undefined, symbol, null μ΄ μμ΅λλ€.
μ°Έμ‘°ν λ°μ΄ν°μλ object κ° μκ³ , κ±°κ²μ ν¬ν¨μ΄ λλ array, function, RegExp(μ κ·ννμ), map, set λ±μ΄ μμ΅λλ€.
λ νμ μ κ°μ₯ ν° μ°¨μ΄λ κ°μ μ μ₯νλ λ°©μμ λλ€.
κΈ°λ³Έν λ°μ΄ν°λ λ°λ‘ κ°μ λ©λͺ¨λ¦¬μ ν λΉνμ§λ§, μ°Έμ‘°ν λ°μ΄ν°λ κ°μ΄ λ€μ΄ μλ λ©λͺ¨λ¦¬μ μ£Όμλ₯Ό ν λΉν©λλ€.
μλ₯Ό λ€μ΄λ³΄λ©΄,
λ¨Όμ a μ 1 μ λ£μ΅λλ€.
let a = 1;
let b = a;
aμ κ°μ λ°μ bλ₯Ό μΆλ ₯νλ©΄ 1μ΄ λμ΅λλ€. μ΄κ²μ Copy by Value λΌκ³ ν©λλ€
κ·Έλ λ€λ©΄ bμ κ°μ λ³κ²½νκ³ μΆλ ₯νκ² μ΅λλ€.
b = 2;
bλ₯Ό μΆλ ₯νλ μ΄μ 2κ° λμμ΅λλ€. λ€μ aλ₯Ό μΆλ ₯ν΄ λ³΄λ μ¬μ ν 1μ΄ λμμ΅λλ€.
λΉμ°ν bμ κ°λ§ λ°κΏ¨μΌλκΉμ.
κ·Έλ¬λ μ΄ λΉμ°ν μ΄μΌκΈ° μ°Έμ‘°ν λ°μ΄ν°μμλ λ€λ₯Έ κ²°κ³Όλ₯Ό λ³΄μ¬ μ€λλ€!
μ°Έμ‘°νμ μμλ‘ object λ₯Ό νλ λ§λ€μμ΅λλ€. cat μ΄λΌλ object λ₯Ό λ§λ€μ΄μ dog μ λ£μ΄ μ€λλ€.
let cat = {
name : 'cat';
}
let dog = cat;
dog λ₯Ό μΆλ ₯ν΄λ³΄λ©΄, { name : 'cat' } μ΄ λμ΅λλ€.
μ΄λ κ² λ³΄λ©΄, μμ λ€λ₯Ό κ²μ΄ μλ κ² κ°μ£ ? κ°μ΄ λκ°μ΄ 볡μ¬κ° λλκΉμ.
νμ§λ§, μ΄λ κ² ν΄λ³΄λ©΄ μ΄λ¨κΉμ?
dog.name = 'dog';
dog μ name κ°μ λ°κΏ¨μ΅λλ€. dog λ₯Ό μΆλ ₯νλ { name : 'dog' } κ° λμμ΅λλ€.
κ·Έλ¦¬κ³ cat μ μΆλ ₯ν΄λ³΄λ dog κ³Ό λμΌνκ² { name : 'dog' } κ° λμμ΅λλ€.
μλ, cat μ name μ λ°κΎΌ μ μ΄ μλλ° μ cat μ κ°μ²΄λ λ³κ²½λ κ²μΌκΉμ?
κ·Έ μ΄μ λ object λ μμ 첫 λ²μ§Έ μμ(Copy by Value)μ λ¬λ¦¬ μ°Έμ‘° κ°! μ¦, κ°μ κ°μ§κ³ μλ μ£Όμμ κ°μ΄ ν λΉ λκΈ° λλ¬Έμ λλ€. μ΄κ²μ Copy by Reference λΌκ³ ν©λλ€.
μμ μ½λ μ€ let dog = cat; <- μ΄ λΆλΆμ΄ { name : 'cat' } μ΄ κ°μ dog μ λ£λ κ²μ΄ μλλΌ, μ΄ κ°μ΄ λ€μ΄κ° μλ μ£Όμ! 0x0000001 κ°μ μ£Όμλ₯Ό λ겨 μ£Όλ κ±°λλλ€.
λλ¬Έμ dog.name = 'dog'; μ΄ μκ°μ μκΉ cat νν λ°μ μ£Όμλ‘ κ°μ cat μ΄λ ν¨κ» μ¬μ©νκ³ μλ λ°μ΄ν°λ₯Ό μμ ν κ²μ λλ€.
(μ§ μ£ΌμΈ νλ½λ μμ΄ μ£Όμλ₯Ό 곡μ νλ€λ μ΄μ λ§μΌλ‘ μ΄λ κ² λ°μ΄ν°λ₯Ό λ°κΏ μ μλ€λ..)
λλ¬Έμ object κ°μ μ°Έμ‘°ν λ°μ΄ν°λ₯Ό μ¬μ©ν λλ μ£Όμ ν΄μΌ ν©λλ€.
μ°Έκ³ μλ£ π
https://webclub.tistory.com/638
JS Basics #1 - JS κΈ°λ³Ένκ³Ό μ°Έμ‘°ν μ°¨μ΄μ μ 리
κΈ°λ³Ένκ³Ό μλ£νμ μ°¨μ΄ μλ°μ€ν¬λ¦½νΈμ λκ°μ§ νμ μΈ κΈ°λ³Έν κ³Ό μλ£ν μ μ μμ λν΄ μμλ³΄κ³ λ νμ κ°μ μ°¨μ΄μ μ΄ λ°μνλ μμΈμ λν΄ μμλ³΄κ² μ΅λλ€. μλ°μ€ν¬λ¦½νΈ λ°μ΄ν° νμ μ
webclub.tistory.com
https://developer.mozilla.org/en-US/docs/Glossary/Primitive
Primitive - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
In JavaScript, a primitive (primitive value, primitive data type) is data that is not an object and has no methods or properties. There are 7 primitive data types:
developer.mozilla.org
'JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
JS ν¨μ μ μΈλ¬Έκ³Ό ν¨μ ννμ μ°¨μ΄ (0) | 2022.08.11 |
---|---|
JS μμ 볡μ¬μ κΉμ λ³΅μ¬ (0) | 2022.08.11 |
JS λΆλ³ κ°μ²΄ λ§λ€κΈ° (0) | 2022.08.10 |
JS Truthy μ Falsy (0) | 2022.08.10 |
JS ν λ³ν (λ¬Έμλ₯Ό μ«μλ‘, μ«μλ₯Ό λ¬Έμλ‘), λ³μμ νμ νμΈ typeof (0) | 2022.08.10 |