강의 노트/JS

[JS deep dive] 11장 원시값과 객체의 비교

매망쩔 2023. 3. 27. 05:10
   원시 타입 객체 타입
값 변경 가능 여부 변경 불가능한 값 변경 가능한 값
저장 변수에 할당 시 변수에 실제값이 저장 변수에 할당시 변수에 참조값이 저장
전달 값에 의한 전달(원시 값이 복사됨) 참조에 의한 전달

 

원시값

변경 불가능한 값(읽기 전용)

변수 값은 변경 가능하나(재할당), 변수에 할당된 원시 값 자체 변경은 불가능함.

불변성을 갖는 원시값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없다.

 

유사배열객체 : 배열처럼 인덱스로 프로퍼티 값에 접근할 수 있고 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