Javascript Primitive type vs Reference type (원시타입 vs 참조타입)

JBoB·2023년 1월 31일
0

🐧원시 타입( Primitive type )

  • 자바스크립트에서 나타내는 원시타입은???
    • 문자(string)
    • 숫자(number)
    • boolean
    • null
    • undefined
    • symbol
  • 변수에 할당될 때 메모리 상에 고정된 크기로 저장되고 해당 변수가 원시 데이터의 값을 보관한다.
  • 변수를 재할당 해도 변수의 할당값에 영향을 주지 않는다.
let myString = 'goodNews';
myString = 'badNews'; // 재할당 가능

myString[0] = 'B'; // 원시 타입이기 때문에 BadNews로 변경 불가능. 오류는 Throw되지 않는다.
console.log(myString); // badNews

let myString2 = myString; // myString 값이 myString2에 그대로 복사되어 'badNews'가 할당된다.
console.log(myString2); // badNews

myString2 = 20;

console.log(myString); // badNews
console.log(myString2); // 20

각 변수 간에 원시 타입 데이터를 복사할 경우 데이터의 값이 복사된다.

🐧참조 타입

  • 참조 타입은 변수에 할당할 때에는 값이 아닌 “주소(중요) ”를 저장합니다.
  • 배열,객체,함수 3가지 참조타입.
  • 자바스크립트는 객체의 메모리를 직접 조작하고 않고, 해당 객체에 대한 “참조”를 조작한다.
  • 크기가 정해져 있지 않고 변수에 할당될 때 값이 직접 해당 변수에 저장될 수 없으며, 변수에는 데이터에 대한 참조만 저장된다.
  • 참조타입은 변수의 값이 저장된 메모리 블럭의 주소 를 가지고 있고, 자바스크립트의 엔진이 변수가 가지고 있는 메모리 주소를 이용해서 변수의 값에 접근.
let a = {name: "joo", num:1};
b = a;
a.name = "hyun";

console.log(a) //{name: "hyun", num:1}
console.log(b) //{name: "hyun", num:1}
  • 각 변수 간에 참조 타입 데이터를 복사할 경우 데이터의 참조가 복사된다.
let arr = [1,2,3,4,5];
let obj = {name:"hy", age:26};

원시타입은 데이터의 값이 복사가 되어 복사된 원본 값이 그대로지만

참조타입은 데이터를 주소라는 블럭에 저장하여 복사를 할 경우 원시타입과 똑같이 복사가 되지만

주소를 찾을때 주소까지 복사가 되어 원본값도 데이터가 변경된다.

참조:
https://heeyeonjeong.tistory.com/106

profile
간절하고 치열하게 살자

0개의 댓글