-
반응형
자바스크립트의 자료형
- 기본(원시) 타입 (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