*데이터불변성
데이터값이 메모리에 한번 들어가면 불변한다.
할당연산자 사용시 데이터는 복사의 의미가 아닌 메모리 주소의 위치를 변경하게 된다.
참조형데이터의 경우 할당연산자를 사용할 경우 메모리 위치가 바뀌어 전체적인 틀이 깨질 수 있으므로
데이터를 얕은복사, 혹은 깊은 복사의 개념으로 접근하는 것이 좋다.
//데이터불변성(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
'프론트엔드 공부 > javscript' 카테고리의 다른 글
정규표현식01(RegExp) (0) | 2021.06.02 |
---|---|
참조형데이터의 복사 : Object.assign(), spread 연산자, lodash (2) | 2021.05.25 |
전개연산자(spread), rest parameter, 축약형 (0) | 2021.05.25 |
구조분해할당(Destructing assignment) - 객체,배열 (0) | 2021.05.25 |
정적메서드 Object.keys(); 사용시 인덱싱사용하는 이유 (0) | 2021.05.25 |