원시자료형과 참조자료형

Junyoung Song·2022년 3월 18일
0

JS

목록 보기
9/13

원시 자료형(Primitive Data Types)

원시 자료형의 종류

  • Numbers
  • String
  • Boolean
  • Null
  • Undefined
  • Symbols

원시 자료형의 경우 객체가 아니기 때문에 메소드가 없습니다. String의 경우는 메소드가 있어서 의아 하실 수 있지만 자바 스크립트에서는 원시 자료형인 String을 객체로 변환하기 때문에 메소드를 사용하실 수 있습니다.

  • 원시 자료형을 변수에 할당할 경우 특정한 값을 특정한 메모리 상자에 넣는것으로 생각 할 수 있습니다.
  • 그리고 원시 자료형의 값을 가진 변수를 다른것에 할당할 경우 그 값이 새로운 변수에 저장됩니다.
let name1 = "Jun"; // name1 : "Jun"
let name2 = name1; // name2 : "Jun"

name2 = "Jack" // name2 : "Jack"
console.log(name1); // "Jun"

위와 같이 name1에 원시 자료형인 string을 할당하고 name2에 그것을 복사한 뒤 name2 를 바꾸더라도 name1의 값은 변경되지 않습니다.

참조 자료형(Reference Data Types)

참조 자료형 종류

  • Array
  • Object
  • Function
  • Dates
  • 다른 종류의 객체들

참조 자료형의 경우 원시 자료형과달리 매우 동적입니다. 참조 자료형의 경우 고정된 크기가 없습니다.
대부분의 참조 자료형은 객체이고, 그렇기 때문에 메소드를 가지고 있습니다.

참조 자료형을 변수에 할당할 경우 변수에는 실제로 값이 들어 있지 않습니다. 실제로 변수에는 그 참조 자료형을 저장한 곳의 주소가 저장되어 있습니다. 그렇기 때문에 const 를 써서 선언 하더라도 값의 변경이 가능한 것입니다. const에 할당한 참조 자료형의 주소가 들어있는것 이기 때문에 참조 자료형의 값을 변경하더라도 const에 실제로 저장되어 있는 값인 주소는 변경되는것이 아니기 때문 입니다.

const arr1 = [ 1,2,3 ]
const arr2 = arr1;
arr1 // [1, 2, 3]
arr2 // [1, 2, 3]
arr2[1] = 17;
arr2// [1, 17, 3]
arr1// [1, 17, 3]

위와 같이 arr1을 선언해 할당한 뒤, arr2에 arr1을 복사한뒤 arr2의 1번 인덱스의 값을 변경하였는데 arr1의 값도 같이 변경되는 것을 확인 할 수 있습니다.


참조:
https://www.freecodecamp.org/news/primitive-vs-reference-data-types-in-javascript/ https://dev.to/ykhokhaneshiya/javascript-primitive-vs-reference-types-43dl

0개의 댓글