본문 바로가기

프론트엔드 공부/javscript

참조형데이터의 데이터불변성

*데이터불변성

데이터값이 메모리에 한번 들어가면 불변한다.

할당연산자 사용시 데이터는 복사의 의미가 아닌 메모리 주소의 위치를 변경하게 된다.

 

참조형데이터의 경우 할당연산자를 사용할 경우 메모리 위치가 바뀌어 전체적인 틀이 깨질 수 있으므로 

데이터를 얕은복사, 혹은 깊은 복사의 개념으로 접근하는 것이 좋다.

 

//데이터불변성(Immutabililty)
//원시데이터:
//string,number,boolean,undefined,null
//참조데이터:
//object,array,function(콜백형태로 사용시)

//원시데이터는 한번 메모리에 들어가면불변한다
//하단 예시의 경우 a라는 변수가 1이라는 메모리를, b라는 변수가 1이라는 메모리를 가르키는 것과 같다
// ex ) let a=1 ; let b = 1; a===b //true 
//실제로는 원시데이터보다 참조형 데이터에서 데이터불변성이 중요하게 다가온다


//참조형데이터에서 할당연산자 사용은 복사의 의미가 아니라
//메모리 주소를 옮기는 것이다

let a = {k:1}
let b = {k:1}
console.log(a,b,a === b); //{k:1} {k:1} false
a.k = 7
b=a
console.log(a,b,a===b);//{k:7} {k:7} true
a.k=2
console.log(a,b,a===b);//{k:2} {k:2} true
let c = b
console.log(a,b,c,a===c);//{k:2} {k:2} {k:2} true
a.k=9
console.log(a,b,c,a===c);//{k:9} {k:9} {k:9} true