변수의 데이터 타입은 아래와 같이 두가지가 있다.
원시타입 : 단일데이터 단 한개의 값만 데이터에 저장한다.
메모리공간 : data의 값을 참조하여 변하지 않는다.
복사 : 깊은복사를 한다.
ex) Boolean, Null, Undefined, Number, String, Symbol, ...
객체타입 : data에 주소값을 저장하고 데이터는 heap에 저장한다.
메모리공간 : data에 heap의 주소 값을 할당하고 값은 heap에 저장을 한다.
따라서 메모리 공간이 동적으로 변한다.
복사 : 얕은 복사를 한다.
ex) Array, Object, Function, Data, Regex, ...
깊은복사 : 원시타입 데이터는 새로운 주소에 값 자체가 복사. 새로운 값 수정 시 기존 값에 영향 X
얕은복사 : 복합데이터 타입은 새로운 주소에 기존의 주소값을 복사. 결국 같은 주소 값을 참조.
새로운 값 수정 시 기존 값에 영향 O
깊은 복사와 얕은 복사 과정을 통한 이해)
let a = 4; // a4라는 값은 RAM에 저장이 되고 RAM의 주소값이 stack의 a에 저장이 된다.
let c = 4; //a4가 이미 선언 되어있으므로 c에는 a와 같은 RAM주소값이 저장이 된다.
c = 5; //a5라는 데이터가 새로 생기고 5라는 RAM의 주소값이 stack의 c에 들어간다.
a = c; //a에는 c의 RAM주소값이 들어간다.
c = 6; //a6이라는 데이터가 새로 생기고 6라는 RAM의 주소값이 stack의 c에 들어간다.
//원시타입 데이터기 때문에 새로운 주소에 값 자체가 복사되어 새로운 값 수정 시 기존 값에 영향 없다.
'Javascript' 카테고리의 다른 글
타입변환, {}의중의적표현,this (0) | 2022.09.28 |
---|---|
자바스크립트에서 비동기 처리가 가능하게 해주는 Web API (0) | 2022.09.21 |
스코프의 범위 (0) | 2022.09.02 |
if, 반복문, function에서 break, continue, return (0) | 2022.09.02 |
고차함수_forEach, find, findIndex,some,every,filter (0) | 2022.08.13 |