원시 자료형과 참조 자료형

신창용·2022년 11월 7일
0
post-custom-banner

원시 자료형 (primitive)

-JavaScript에서 원시 타입의 데이터(primitive data types; 원시 자료형)는 객체가 아니면서 method를 가지지 않는 6 가지의 타입

  • 고정된 저장 공간을 차지하는 데이터
  • stack 이라는 저장 공간에 할당 (각 개인 사물함이 있다고 생각)
  • 각 변수간의 원시 타입 데이터를 복사할경우 데이터 값이 복사 되어 기존 값에 영향을 주지 않는다.
  • 데이터의 크기와는 관계없이 하나의 데이터만 담을 수 있으며, 원시 자료형은 값 자체에 대한 변경이 불가능(immutable)하지만, 변수에 다른 데이터를 할당할 수는 있다.
	"hello world!"
	"hello vlog!"
	// "hello world!" 와 "hello vlog!"는 변경할 수 없는 고정된 값

	let word = "hello world!"
    word = "hello vlog!"
	//하지만, word라는 변수에 재할당을 하여 변수에 담긴 내용을 변경하는 것은 가능

	const num1 = 123;
	num1 = 123456789; //에러 발생
	// const 키워드로 선언시, 재할당은 불가능

참조 자료형 (reference)

  • arry, object, function과 같이 대량의 데이터를 다루기에 적합한 데이터
  • heap이라는 동적으로 크기가 변하는 빈공간을 만들어 주고 (사물함에 붙여진 주소를 가지고 heap일라는 공간에 가서 불러옴)
  • 참조 타입인 경우 주소를 복사를 하기 때문에 복사를 하여 수정 하게 되면 값이 변하게 된다.
  • JavaScript에서 원시 자료형이 아닌 모든 것은 참조 자료형입니다. 배열([])과 객체({}), 함수(function(){})가 대표적이다. 이런 자료형을 JavaScript에서는 참조 자료형(reference data type; 참조 타입)이라고도 부른다.
	let player = { score:3};
	function doStuff(obj){ 
      obj.score = 2;
    }
	doStuff(player); //함수 doStuff에 변수 player를 인자로 전달하여 호출

	//함수가 호출되면 매개변수 obj에 변수 player의 값이 할당 {score:3}의 주소값이기 때문에 
//obj.score에 2를 할당하면, obj와 player는 같은 주소값을 가지고 있기 때문에 player.score도 2가 되게 된다.

차이

  • 데이터를 저장하는 방식에 따른 분류
profile
코딩으로 쓰는 일기장
post-custom-banner

0개의 댓글