| 원시 타입 | 객체 타입 | |
| 값 변경 가능 여부 | 변경 불가능한 값 | 변경 가능한 값 |
| 저장 | 변수에 할당 시 변수에 실제값이 저장 | 변수에 할당시 변수에 참조값이 저장 |
| 전달 | 값에 의한 전달(원시 값이 복사됨) | 참조에 의한 전달 |
원시값
변경 불가능한 값(읽기 전용)
변수 값은 변경 가능하나(재할당), 변수에 할당된 원시 값 자체 변경은 불가능함.
불변성을 갖는 원시값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없다.
유사배열객체 : 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고 length 프로퍼티를 갖는 객체.
문자열 유사 배열 이므로 인덱스 사용 가능
(래퍼객체 추후 학습)
유사 배열이므로 배열과 유사하게 각 문자에 접근은 가능하지만, 변경은 안됨(원시값이므로)
--> 데이터의 신뢰성을 보장
값에 의한 전달 (사실은 메모리 주소를 전달)
var score = 90;
var copy = score;
score = 100;
console.log(score) //100
console.log(copy) // 90
copy= score에서 score의 값이 90이 할당되는 것임
다른 메모리 공간에 저장된 별개의 값
변수에는 값이 전달되는 것이 아니라 메모리 주소가 전달 됨. 이는 변수와 같은 식별자는 값이 아니라 메모리 주소를 기억하기 떄문임.
객체
원시 값과 다르게 메모리 공간의 크기를 사전에 정해 둘 수 없음.
변경가능한 값: 객체 타입의 값은 변경 가능한 값이다.
재할당 없이 프로퍼티 값을 갱신, 삭제, 동적으로 추가 가능
단점 : 여러 개의 식별자가 하나의 객체를 공유할 수 있음
참조에 의한 전달 : 참조 값이 복사되어 전달됨.
'강의 노트 > JS' 카테고리의 다른 글
| [JS deep dive] 13장 스코프 (0) | 2023.03.29 |
|---|---|
| [JS deep dive] 함수 (0) | 2023.03.28 |
| [JS deep dive]객체 리터럴 (0) | 2023.03.27 |
| [JS deep dive] 타입 변환과 단축 평가 (0) | 2023.03.23 |
| [JS deepdive] 제어문 (3) | 2023.03.23 |