🔑 키워드 정리
- 값에 의한 전달 : 변수에 원시 값을 할당하면 실제 값이 저장된다. 정확히 말하면 메모리 주소를 전달한다.
- 참조에 의한 전달 : 변수에 객체를 할당하면 참조 값이 저장된다.
🗒 내용 정리
- const 키워드를 사용한 변수에 원시 값을 할당하면 변경할 수 없지만 객체를 할당하면 변경할 수 있다.
// 원시 값 할당
const a = 1;
a = 2; // 불가능
// 객체 할당
const o = {};
o.a = 1; // 가능
문자열
- 문자열은 원시 타입이며, 변경 불가능하다. 문자열은 유사 배열 객체이면서 이터러블이다. (for 문으로 순회 접근할 수 있다.)
- 원시 값을 복사하면 다른 메모리 공간에 저장된다. 별개의 값이 되는 것이다. 한쪽에서 재할당을 해서 값을 변경하더라도 서로 간섭할 수 없다.
객체
- 객체는 프로퍼티의 개수가 정해져 있지 않으며, 동적으로 추가되고 삭제할 수 있다. 프로퍼티 값에도 제한이 없고 메모리 공간의 크기도 정해져있지 않다. 즉 객체는 변경 가능한 값이다.
- 객체를 복사하면 두 개의 식별자가 하나의 객체를 공유하게 된다. 한쪽에서 객체를 변경하면 서로 영향을 받는다.
얕은 복사와 깊은 복사
- 얕은 복사는 참조 값을 복사하고 깊은 복사는 원시 값처럼 복사본을 만든다. 중첩된 객체의 경우 전자는 한 단계까지만 복사하고 후자는 중첩된 객체까지 모두 복사하게 된다. 원시 값을 변수에 할당하는 것을 깊은 복사, 객체를 할당하는 것을 얕은 복사라고 하기도 한다.
const o = { x: { y: 1 } };
// 얕은 복사
const c1 = { ...o };
c1 === o; // false
c1.x === o.x; // true
// 깊은 복사
const c2 = Loddash.cloneDeep(o);
c2 === o; // false
c2.x === o.x; // false
'Today I Learned' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 13장 스코프 (0) | 2022.02.13 |
---|---|
모던 자바스크립트 Deep Dive 12장 함수 (0) | 2022.02.13 |
운영체제와 정보기술의 원리9 디스크 관리 (0) | 2022.02.06 |
운영체제와 정보기술의 원리8 가상 메모리 (0) | 2022.02.05 |
운영체제와 정보기술의 원리7 메모리 관리 (0) | 2022.02.03 |