Unit.9 원시자료형과 참조자료형

2023. 1. 2. 10:51코드스테이츠/코드스테이츠S1: Chapter & Unit


원시타입 자료형 (primitive type data) 

원시타입 데이터의 종류에는 아래와 같은 주로 사용되는 5가지 타입이 있다.

5 //number
'문자열'//String
true // boolean
null // (null)
undifined // undifined

 

원시타입 자료형의 특징에는 아래와 같이 원본을 보존한다는 특징이있다.

 

let a = 3
b = a 
b = 5
console.log(a) // 3
변수 b에 변수 a의 '값'을 할당해줘서 b의값은 3,
이 후 변수 b에 값 5를 재할당 하면서 b의 값은 5가됐지만 원시자료형인 number는
원본이 보존되어 a = 3 으로 영향이없다.

 

원시타입 자료형은이 같은지만 판단하기 때문에  값이 같다면 true를 반환한다.

 

let a = 'cocoa'
leb b = 'cocoa'

console.log('cocoa' === 'cocoa')
true

참조타입 자료형 (reference type data) 

참조타입 데이터의 종류에는 아래와 같은 주로 사용되는 3가지 타입이 있다.

[1,2,3,4,'내일'] // 배열
let obj{a:1, b:2, c:3} // 객체
function(){} // 함수

 

참조타입 자료형의 특징에는 아래와같이 원본에 영향을 준다는 특징이 있다.

 

 

let color = ['red','blue','green','yellow'] 
let color2 = color
color2[1] = 'black'
console.log(color)
['red','black','green','yellow']

 

 

참조타입 자료형은 주소를 판단하기때문에, 값이 같아도 주소가 다르다면 false를 반환한다.

let a = [1,2,3,4,5]
let b = [1,2,3,4,5]

console.log([1,2,3,4,5] === [1,2,3,4,5])
false

원시타입 자료형과 참조타입 자료형을 구분한 이유

 

자바스크립트가 원시 자료형, 참조 자료형으로 구분한 이유는 변수에 넣을 수 있는 데이터의 크기, 저장소의 크기가 제한되기 때문이다.

기술이 진보하면서 처리해야할 데이터의 양도 늘었고, 이 늘어난 데이터를 다루기 위해 구현된 것이 배열, 객체, 함수들이며, 이 타입들은 데이터의 양이 유동적으로 변한다.

즉, 저장소엔 데이터가 위치한 곳(메모리상의 주소)만 저장하고, 값을 불러올 땐 저장소에 저장된 주소를 따라가서 heap 이라는 특별한 데이터 저장소에서 찾는 방식으로 데이터를 처리하게 된다.

데이터는 특별한 저장소에 별도로 관리되고, 우리가 다루는 변수엔 주소만 저장된다. 이 변수를 사용할 땐 그 변수의 주소를 참조하여 실제 변수가 있는 장소에 어떤 데이터가 있는지 도착하고 나서야 비로소 읽을 수 있기 때문에, 참조 자료형(Reference type)으로 불리게 되었다.


원시타입 자료형과 참조타입 자료형의 차이

원시 자료형은 변수에 값이 할당될 때, 값 자체가 할당됨

참조 자료형은 변수에 값이 할당될 때, 보관함의 주소(reference)가 할당됨

변수엔 원시 값 혹은 주소만 지정할 수 있고, 주소는 크기가 변하는 특별한 데이터 저장소인 heap을 참조하게 되는 것이다.

'코드스테이츠 > 코드스테이츠S1: Chapter & Unit' 카테고리의 다른 글

Unit.9 JS[spread/rest] 문법  (0) 2023.01.03
Unit.9 스코프  (0) 2023.01.02
Unit.8 배열  (0) 2022.12.29
Unit4-[CSS] 셀렉터  (0) 2022.12.22
Unit2-[JavaScript] 기초 [함수]  (0) 2022.12.21