[JavaScript] ν¨μμ λΆλ³μ±(Immutability) μ΄λ?
ν¨μμ λΆλ³μ±μ΄λ?
ν¨μ λ΄λΆμμ μΈλΆλ‘λΆν° μ£Όμ΄μ§ parameterμ κ° λλ μνλ₯Ό λ³κ²½νμ§ μμμΌ ν¨μ λ»νλ€.
κ° λλ μν λ³κ²½μ΄ νμν κ²½μ°μλ μλ‘μ΄ κ° λλ κ°μ²΄(Object)λ₯Ό λ§λ€μ΄μ λ°νν΄μΌ νλ€.
Primitive Type λ°μ΄ν°
primitive λ°μ΄ν°μ κ²½μ° κ°μ 볡μ¬(pass by value)νκΈ° λλ¬Έμ, ν¨μμ λ§€κ° λ³μλ‘ μ λ¬λ λ°μ΄ν°λ₯Ό λ³κ²½νλλΌλ, μλ λ³μλ λ°λμ§ μλλ€.
κ·ΈλΌμλ, λ€λ₯Έ κ°λ°μλ μ¬μ©μλ€μ΄ ν¨μλ₯Ό μ¬μ©ν¨μ μμ΄ ν¨μ λ΄λΆμμ μλμ κ°μ λ°κΎΈλ κ²μ μ’μ§ μκΈ° λλ¬Έμ
μλ‘μ΄ λ³μλ₯Ό μμ±ν΄μ, νλΌλ―Έν°λ‘ μ λ¬λ κ°μ ν λΉν μ΄νμ λ³κ²½νλ κ²μ΄ λ°λμ§νλ€.
μλ₯Όλ€μ΄, const count = val, count = 6;
μ΄λ°μμΌλ‘ countλΌλ μλ‘μ΄ λ³μλ₯Ό ν¨μ μμμ μ¬μ©ν μ μλλ‘ λ§λ€μ΄ λκ³ , μ΄ λ³μλ₯Ό κ°μ§κ³ λ³κ²½νκ±°λ νμ©νλ κ²μ΄ μ’λ€.
function countUp(val){
val = 6;
console.log(val); // 6
}
const start = 1;
countUp(start);
console.log(start) // 1
Object Type λ°μ΄ν°
λ°λ©΄, object λ°μ΄ν°μ κ²½μ°μλ ν¨μμ λ§€κ° λ³μλ‘ μ λ¬λμμ λ,
ν¨μ λ΄λΆμμ λ§€κ° λ³μλ‘ μ λ¬λ object λ°μ΄ν°μ μνλ₯Ό λ³κ²½νλ€λ©΄
μ΄ λ§€κ° λ³μλ κ²°κ΅ μ€μ κ°μ²΄μ μ£Όμλ₯Ό κ°λ¦¬ν€κ³ μμΌλ―λ‘(pass by reference), μ€μ κ°μ²΄μ μνκ° λ³κ²½λ¨μ μ£Όμν΄μΌ νλ€.
(μλ μ½λμμ μ€μ κ°μ²΄ VIPμ nameμ΄ SONμμ KaneμΌλ‘ λ³κ²½λμλ€.)
λ°λΌμ 맀κ°λ³μλ‘ λ°λ κ²½μ°, μνλ₯Ό λ³κ²½ν νμκ° μμ κ²½μ°μλ changeVIP ν¨μ λ΄μ μλ‘μ΄ Objectλ₯Ό λ§λ€μ΄μ λ³κ²½νκ±°λ λ°νν΄μΌ νλ€.
function changeVIP(vip){
vip.name = 'Kane'
console.log(vip); // { name: 'Kane', club: 'Tottenham' }
}
const VIP = {
name: 'SON',
club: 'Tottenham'
}
changeVIP(VIP);
console.log(VIP); // // { name: 'Kane', club: 'Tottenham' }