원시자료형과 참조자료형

Junny_·2022년 7월 11일
0

원시자료형과 참조자료형은 무엇인가?

원시 자료형이 할당될 때에는 변수에 값(value) 자체가 담기고
참조 자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.

원시자료형

원시값이란?

javascript에서 원시값, 또는 원시자료형이란 객체가 아니면서, 메서드도 가지지 않는 데이터 타입을 의미한다
모든 원시 값은 불변하여 변형할 수 없는 특징이 있기도 하며,
원시 값 자체와, 원시값을 할당한 변수를 혼동하지 않는 것이 매우 중요하다
변수는 새로운 값을 다시 할당할 수 있지만, 이미 생성한 원시 값은 객체, 배열, 함수와는 달리 변형할 수 없다

원시의 종류

원시종류에는 총 7가지가 존재하며
string, number, bigint, boolean, undefined, symbol, (null)
이 중 자주 사용하는 원시는
string, number, boolean, undefined, (null) 로 구분된다

원시자료형 예제

let a = 1; // a라는 변수에 1을 할당
let b = a; // b라는 변수를 선언하고 a를 할당
b = 3; // b라는 변수는 3이라고 저장
alert(a); // 알림창 a를 실행해도 값은 변하지 않고 1이 출력
let a = 1; // a라는 변수에 1을 할당
function b(value) { // b함수 선언 매개변수 value
  value = 2; // 매개변수 value에 2라는 값을 전달
}
b(a) // 함수b에 인자값a로 실행 결과 a는 1로 변하지 않음
// a라는 변수는 참조자료형이 아니기 때문에 주소값을 전달하지않고 값 자체를 복사하여 전달하기에 함수와는 관련이 없다

참조자료형

참조자료형이란?

javascript에서 참조자료형은 원시자료형을 제외한 모든 값을 참조자료형이라고 부른다
참조 자료형의 데이터 자체는 원시 자료형이 보관되는 데이터 보관함이 아닌 특별한 데이터 보관함에 저장된다
데이터가 위치한 곳(메모리 상 주소)을 가리키는 주소가 변수에 저장된다
즉, 변수에는 특별한 데이터 보관함을 찾아갈 수 있는 주소가 담겨있고,
이 주소를 따라가 보면 특별한 데이터 보관함을 찾을 수 있는데, 동적(dynamic)으로 변한다
이처럼 데이터는 별도로 관리되고, 우리가 직접 다루는 변수에는 주소가 저장되기 때문에
reference data type이라고 불리며, 이런 특별한 데이터 보관함을 heap이라고 칭한다

참조자료형 예제

let a = [1, 2, 3, 4, 5]; // a라는 변수에 배열 1부터 5까지 담는다
let b = a; // b라는 변수는 a변수를 할당하고 (같다는 의미)
b[0] = 5; // b변수 배열 0번째에 숫자 5를 할당한다
// 결과값 a = [5, 2, 3, 4, 5]
let a = { b: 3 }; // a라는 변수에 배열 b:3 할당
function c(obj) { // 함수 c를 선언하고 매개변수 d값을 준다
  obj.b = 2;
}
c(a); // 함수 c를 인자값 a로 출력
// 결과갑 a = {b: 2}로 출력 
// {b: 3 }주소값에서 obj.b에 2를 할당하면, obj와 b는 같은 주소값을 가지고 있기 때문에,
// a.b도 2가 되게 된다
profile
Front-end

0개의 댓글