-
반응형
자바스크립트의 자료형
- 기본(원시) 타입 (Primitive values)
- 참조 타입 (Object References)
기본 타입
참조 타입
- Objects (collections of properties)
두 타입의 대표적인 차이점
두 타입은 각 데이터가 메모리상에서 저장되는 형태와 장소가 다르다.
자바스크립트 엔진(ex v8)은 메모리 구조로 콜 스택과 힙을 가진다.
- 콜 스택 : 기본타입 과 실행 컨텍스트(Execution Context) 를 저장하는 곳이다.
- 힙 : 동적으로 변할 수 있는 값(배열 등) 을 저장하는 곳이다.
- 기본 타입의 경우
let temp = "Hello"
- 참조 타입의 경우
let temp = { a: 1000, b: 2000 }
기본타입은 불변성을 가지고 참조 타입은 가지지 않는다.
let string = 'This is a string.'; string[1] = 'H' console.log(string) // 'This is a string.'
기본타입을 생성하면 변경할 방법이 없기 때문에 불변 데이터 유형으로 알려져 있습니다.
let arr = [ 'one', 'two', 'three', 'four', 'five' ]; arr[1] = 'TWO'; console.log(arr) // [ 'one', 'TWO', 'three', 'four', 'five' ];
참조 차입은 불변성을 가지지 않기 때문에 객체가 생성된 후 객체의 값을 변경할 수 있습니다.
let arr1 = [ 1, 2, 3, 4, 5 ]; let arr2 = [ 1, 2, 3, 4, 5 ]; arr1 === arr2; // fals
참조 타입의 경우 중 배열에 해당하는 경우입니다. 이 경우 안의 원소들이 모두 값이 같지만 메모리에 저장되있는 주소 (장소)는 다른 곳입니다. 즉 이 배열은 서로 다른 주소에 존재하는 값입니다. 이 참조 타입을 비교하는 경우 참조로 비교(주소가 일치하는가)되기 때문에 두 개체가 동일하지 않습니다.
var obj3 = { 'car' : 'purple' } var obj4 = obj3; obj3 === obj4; // true
즉 위와 같이 같은 주소에있는 개체라면 true로 비교가 가능합니다.
반응형'코딩' 카테고리의 다른 글
실행 컨텍스트 with this - 2 (0) 2021.09.15 실행 컨텍스트 with 호이스팅, 스코프체인 - 1 (0) 2021.09.14 Let's encrypt 를 이용해 HTTPS 적용하기 with nginx, 도메인 (0) 2020.11.17 ssh를 이용하여 로컬에서 원격서버로 파일 전송하기 (0) 2020.11.17 React-native로 만든 앱에 광고 넣기(Android) with react-native-admob (0) 2020.11.15