Javascriptμ λ³μ νμ
Javascriptμ λ³μ νμ
μλ ν¬κ² Primitive type(μμ νμ
)κ³Ό Reference Type(μ°Έμ‘° νμ
)μΌλ‘
λλμ΄μ Έ μμ΅λλ€.μμ νμ
(Primitive type)
μ λ³μλ€μ λ°μ΄ν° 볡μ¬κ° μΌμ΄λ λ λ©λͺ¨λ¦¬ 곡κ°μ μλ‘ ν보νμ¬ λ
립μ μΈ κ°μ μ μ₯νλ©°, μ°Έμ‘° νμ
(Reference Type)
μ λ©λͺ¨λ¦¬μ μ§μ μ κ·Όμ΄ μλ λ©λͺ¨λ¦¬μ μμΉ(μ£Όμ)μ λν κ°μ μ μΈ μ°Έμ‘°λ₯Ό ν΅ν΄ λ©λͺ¨λ¦¬μ μ κ·Όνλ λ°μ΄ν° νμ
μ
λλ€.
κ° νμ (Value Type)
Javascriptμμ μμ νμ
(String, Number, BigInt, Boolean, undefined, ES6λΆν° μΆκ°λ Symbol) μ λ³μμ ν λΉλ λ, λ©λͺ¨λ¦¬μ κ³ μ ν¬κΈ°λ‘ μμ κ°μ μ μ₯νκ³ ν΄λΉ μ μ₯λ κ°μ λ³μκ° μ§μ μ μΌλ‘ κ°λ¦¬ν€λ ννλ₯Ό λ±λλ€.
λν, κ°μ΄ μ λ λ³νμ§ μλ λΆλ³μ±μ κ°κ³ μκΈ° λλ¬Έμ λλ¬Έμ μ¬ν λΉ μ κΈ°μ‘΄ κ°μ΄ λ³νλ κ²μ²λΌ 보μΌμ§ λͺ°λΌλ μ¬μ€ μλ‘μ΄ λ©λͺ¨λ¦¬μ μ¬ν λΉν κ°μ΄ μ μ₯λκ³ λ³μκ° κ°λ¦¬ν€λ λ©λͺ¨λ¦¬κ° λ¬λΌμ‘μ λΏμ
λλ€.
<μμ 1>
let a = 100;
a = 50;
aλ λ³μμ 100μ΄λ κ°μ ν λΉνκ³ 2λ²μ§Έ λΌμΈμμ 50μΌλ‘ μ¬ν λΉμ ν΄μ€ μμμ
λλ€.
첫 λΌμΈμ΄ μ€νλλ©΄ λ©λͺ¨λ¦¬μ Number
νμ
μ 100μ΄λ κ°μ΄ μμ±λκ³ μλ³μ aλ λ©λͺ¨λ¦¬μ μμ±λ 100μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό κ°λ¦¬ν΅λλ€.
κ·Έ ν λ λ²μ§Έ λΌμΈμ΄ μ€νλλ©΄ μ΄μ λ©λͺ¨λ¦¬μ μμ±λ 100μ΄λ κ°μ΄ 50μΌλ‘ μμ λλ κ²μ΄ μλ, μλ‘μ΄ Number
νμ
μ 50μ΄λ κ°μ μλ‘μ΄ λ©λͺ¨λ¦¬μ μμ±νκ³ aκ° κ°λ¦¬ν€λ λ©λͺ¨λ¦¬μ μ£Όμ κ°μ΄ λ°λλ κ²μ
λλ€.
μ¦, λ©λͺ¨λ¦¬μλ 100κ³Ό 50μ΄λ κ°μ΄ λͺ¨λ μ‘΄μ¬νκ³ μμΌλ©°, μμμ λ§νλ―μ΄ μμ νμ
μ λΆλ³μ±μ κ°κ³ μκΈ° λλ¬Έμ κΈ°μ‘΄μ λ©λͺ¨λ¦¬μ μμ±λ κ°λ€μ κ·Έ μμ²΄κ° λ³κ²½λ μλ μμ΅λλ€.
κ·Έμ μλ³μμ μ°κ²°λΌμλ λ©λͺ¨λ¦¬μ μ£Όμκ° λ°λμκΈ°μ μ°λ¦¬ λμλ κ°μ΄ μ¬ν λΉ λ κ²μ²λΌ 보μ΄λ κ²μ
λλ€.
<μμ 2>
let a = 100;
let b = a;
a = 50;
console.log(b); // 100
μλ‘μ΄ λ³μ bμ aλ₯Ό ν λΉνκ² λλ©΄ λ³μ bμ 곡κ°μλ aμ κ°μ κ°μ ν΅μ§Έλ‘ 볡μ¬νμ¬ λ³μμ λ©λͺ¨λ¦¬μ λ΄κ² λ©λλ€.
κ·Έλ κΈ°μ λ³μ aκ° 50μΌλ‘ μ¬ν λΉ λλλΌλ bλ μ ν μν₯μ λ°μ§ μμ΅λλ€.
μ°Έμ‘° νμ (Reference Type)
μ°Έμ‘° νμ
μ λ³μμ ν λΉν λ κ° νμ
μ²λΌ κ°μ μ μ₯νλ κ²μ΄ μλ μ£Όμλ₯Ό μ μ₯ν©λλ€.
λ³μλ μ£Όμλ₯Ό μ μ₯νκ³ , μ£Όμλ νΉλ³ν λμ μΈ λ°μ΄ν° 보κ΄ν¨μ 보κ΄λ©λλ€.
μ΄ λ³΄κ΄ν¨μ ν(Heap)
μ
λλ€. λ§μ½, κ°μ μ¬ν λΉ ν κ²½μ° μ£Όμλ₯Ό μ°Έμ‘°ν λͺ¨λ κ°μ΄ μν₯μ λ°μ΅λλ€.
μ¦, κ°μ΄ 곡μ λλ νΉμ±μ μ§λκ³ μμ΅λλ€.
- Javascriptμμ μμ μλ£νμ΄ μλ λͺ¨λ κ²μ μ°Έμ‘° μλ£νμ λλ€.
- μ°Έμ‘°νμ μμν λ°μ΄ν°μ μ§ν©μ
λλ€.
λ°°μ΄([])κ³Ό κ°μ²΄({}), ν¨μ(function(){})κ° λνμ μ λλ€. - μ°Έμ‘° μλ£νμ κΈ°μ‘΄μ κ³ μ λ ν¬κΈ°μ 보κ΄ν¨μ΄ μλλλ€.
μ°Έμ‘° μλ£νμ λ³μμ ν λΉν λλ λ³μμ κ°μ΄ μλ μ£Όμλ₯Ό μ μ₯ν©λλ€. - λμ μΌλ‘ ν¬κΈ°κ° λ³νλ λ°μ΄ν°λ₯Ό 보κ΄νκΈ° μν΄ λ³μκ° μλ λ€λ₯Έ κ³³μ λ°μ΄ν°λ₯Ό μ μ₯νκ³ λ³μμλ κ·Έ μ£Όμλ§ ν λΉλ©λλ€.
- λ°°μ΄(Array) - [0,1,2,3,4]
- κ°μ²΄(Object) - {name : 'goong', age : 26}
μ¦, λ³μμλ νλμ κ° νΉμ μ£Όμλ§ μ μ₯ν μ μμ΅λλ€.
<μμ >
let obj = {
a: 1,
b: 2,
c: 3
};
let newObj = obj;
newObj.a = 100; // aμ κ° 100μ μ¬ν λΉ
console.log(obj.a); // 100
console.log(newObj.a); // 100
// λ κ°μ²΄λ λμΌν μ£Όμλ₯Ό μ°Έμ‘°νκΈ° λλ¬Έμ aκ°μ΄ λ°λκ² λκ³ λ°νλλ aμ κ°μ΄ λ λ€ λ³κ²½λ¨.
Summary
- κ° νμ
(Value Type)
- κ°μ μν μ λ¬
- μμ νμ κ°μ κ·Έλλ‘ λ³΅μ¬νλ©° λ°μ΄ν°λ₯Ό λ°κΏλ λ€λ₯Έ λ°μ΄ν°μ μν₯μ λ―ΈμΉμ§ μμ
- μ°Έμ‘° νμ
(Reference Type)
- μ°Έμ‘°μ μν μ λ¬
- μμ νμ μ μ μΈν λͺ¨λ μ°Έμ‘° νμ
- κ°μ²΄μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό 볡μ¬νλ©° λ°μ΄ν°λ₯Ό λ°κΎΈλ©΄ μ°Έμ‘°νλ λͺ¨λμκ² μν₯μ λ―ΈμΉ¨
References
'π₯ Front-End > JavaScript' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JS] 4. μμμ νλ³ν, λͺ μμ νλ³ν, Nominal, ꡬ쑰ν, λ νμ΄ν (0) | 2022.03.31 |
---|---|
[JS] 5. == & === & typeof (0) | 2022.03.22 |
[JS] 2. μμμλ£ν(Primitive Types) (0) | 2022.03.22 |
[JS] 1. Call Stack & Event Loop (0) | 2022.03.22 |
[JS] λ³μ (0) | 2022.03.22 |