원시자료형과 참조자료형

양세희·2022년 5월 18일
0
post-thumbnail

변수의 타입

자바스크립트에는 타입(Type)이라는 개념이 있다.

변수에는 다양한 타입이 존재하는데, 변수에 담을 수 있는 데이터는 숫자나 문자처럼 특정한 형태를 가지고 있다. 그리고 이러한 타입에 따라 할 수 있는 일이 서로 다르다.

자바스크립트의 '원시자료형'과 '참조자료형'

데이터의 두 가지 타입

-원시자료형(primitive type)과 참조자료형(reference type)이 있다.

-원시자료형이 할당될 때는 변수에 값(value)이 담긴다.

-참조자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.

원시자료형 = 원시타입

-객체가 아니면서 메소드를 가지지 않는 여섯 개의 타입이 있다.

-string, number, bigint, boolean, undefined, symbol
(null은 원시 타입과 거의 같게 사용되지만 엄밀히 따지면 객체이다.)

-원시 자료형은 모두 하나의 정보(데이터)를 담고 있다.

  • number: 2.352465
  • string: '홍길동'
  • boolean: true와 false
  • undefined: 변수가 정의되지 않았거나, 값이 없는 경우
  • null: 의도적으로 비어있음을 표현하기 위해 null을 넣을 수 있음
  • symbol:
    ES6에서 새롭게 추가된 타입으로 변경 불가능한 원시 타입의 값이다. 심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용한다.

참조자료형 = 참조타입

-자바스크립트에서 원시자료형이 아닌 모든 것은 참조자료형이다.

-참조형은 원시형 데이터의 집합이다.

-배열과 객체, 함수가 대표적이다.

-참조자료형은 기존에 고정된 크기의 보관함이 아니다.

-참조자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다.

-동적으로 크기가 변하는 데이터를 보관하기 위해 변수가 아닌 다른 곳에
데이터를 저장하고 변수에는 그 주소만 할당한다.

즉, 변수에는 하나의 값 혹은 주소만 저장할 수 있는 것이다.

Q: const로 선언된 변수 배열에 Array.push를 적용할 수 있는 이유는 무엇인가?

A: 배열은 참조형이기 때문에 데이터의 주소를 대입할 수 있기 때문이다!

-값이 저장된 주소값을 할당한다.

-비어있는 데이터 공간을 확보하고, 객체 속 프로퍼티에 대한 공간을 다시 확보한다.

-객체의 프로퍼티명과 주소를 매칭하고, 확보했던 두 번째 주소에 데이터를 할당한다.

-변수를 선언하면 데이터가 담길 공간을 확보하고, 확보된 데이터의 주소값을 가지고 변수명과 매칭시키는 선언과정까지 동일하지만, 할당과정에서 차이가 있다.

자바스크립트 속성(Property)과 메소드(Method)

  • Array 배열 내부에 있는 값은 '요소'
  • Object 객체 내부에 있는 값은 '속성'

-배열의 요소처럼 객체의 속성도 모든 형태의 자료형을 가질 수 있다.
-객체의 속성 중 함수 자료형인 속성을 메소드라고 부른다.

const Person = {
	name: '양세희',
    favoriteL function(thing) {
    	console.log(this.name + '님은 ' + thing + '을(를) 좋아합니다.'};
    }
};
Person.favorite('낮잠');

-코드에서 객체 Person은 name과 favorite이라는 속성을 가진다.
-favorite이라는 속성은 함수 자료형이므로 favorite() 메소드라고 부른다.
-this.name은 메소드 내에서 자기 자신이 가진 속성을 출력하기 위해 사용된다
-같은 Person 객체에서 존재하는 name을 불러온다는 뜻이다.
-코드를 실행하면 '양세희님은 낮잠을(를) 좋아합니다.'라는 문장이 출력된다.

[정리]

-자바스크립트 데이터 타입에는 원시자료형과 참조자료형이 있다.

-원시자료형이 할당될 때는 변수에 값이 담기고,
참조자료형이 할당될 때는 변수에 주소가 담긴다.

-원시자료형에는 객체가 아니면서 메소드를 가지지 않는 여섯 개의 타입이 있다.
=> number, string, boolean, undefined, null, symbol

-자바스크립트에서 원시자료형이 아닌 모든 것은 참조자료형이고,
참조자료형에는 대표적으로 배열, 객체, 함수가 있다.

0개의 댓글