JavaScript - 원시값, 참조값, 깊은 복사, 얕은 복사

dev_swan·2022년 1월 10일
0

HTML-CSS-JS

목록 보기
8/19
post-thumbnail

원시값

"단순한 데이터"이고 실제 값 자체를 가지고 연산이 이루어 진다. 종류로는 "null, undefined, string, number, boolean" 등이 있다.

참조값

모든 연산이 실제 값이 아닌 값의 주소를 참조하여 연산한다. 종류로는 객체(Object), 배열(Array) 등이 있다.

깊은 복사 (deep copy)

똑같은 구조의 객체를 하나 더 생성하여 따로 사용하고자 할 때 사용하며, 객체 안에 객체가 있을 경우에도 원본과의 참조가 완전히 끊어진 객체를 말한다.

위처럼 num2라는 문자열(String)에 num1을 넣어서 num2를 1로 만들었지만 밑에 num2에 2를 대입시켰기 때문에 num2는 2가 되고 num1에는 영향을 미치지 않는다. 이것이 깊은 복사 개념이다.

얕은 복사 (shallow copy)

객체에 변수를 저장하면 실제 값을 저장하는것이 아닌 메모리 어딘가에 객체 { }를 만들고 참조값을 저장하게 된다 따라서 객체와 배열은 값을 복사하는것이 아닌 참조값을 복사하는것이라 이를 "얕은" 복사라고 한다.

얕은 복사를 하는 방법은 여러가지가 있는데 필자는 * Object.assign(생성할 개체, 복사할 개체)를 사용하여 얕은 복사를 해보았다.

위처럼 a와b는 서로 다른 객체이지만 그 안에 있는 참조값은 서로 같은것을 확인할 수 있다.

전개 연산자 spread (...)

전개 연산자로 깊은 복사를 하는 방법 중 하나이다.

const (상수)

const는 let과 다르게 선언 후 값을 재할당 할 수 없다. 고로 값을 재할당 할 경우는 "let", 재할당 하지 않을 경우에는 "const"를 사용하자!

0개의 댓글