변수의 타입
자바스크립트에는 타입(Type)이라는 개념이 있다.
변수에는 다양한 타입이 존재하는데, 변수에 담을 수 있는 데이터는 숫자나 문자처럼 특정한 형태를 가지고 있다. 그리고 이러한 타입에 따라 할 수 있는 일이 서로 다르다.
자바스크립트의 '원시자료형'과 '참조자료형'
-원시자료형(primitive type)과 참조자료형(reference type)이 있다.
-원시자료형이 할당될 때는 변수에 값(value)이 담긴다.
-참조자료형이 할당될 때는 보관함의 주소(reference)가 담긴다.
-객체가 아니면서 메소드를 가지지 않는 여섯 개의 타입이 있다.
-string, number, bigint, boolean, undefined, symbol
(null은 원시 타입과 거의 같게 사용되지만 엄밀히 따지면 객체이다.)
-원시 자료형은 모두 하나의 정보(데이터)를 담고 있다.
-자바스크립트에서 원시자료형이 아닌 모든 것은 참조자료형이다.
-참조형은 원시형 데이터의 집합이다.
-배열과 객체, 함수가 대표적이다.
-참조자료형은 기존에 고정된 크기의 보관함이 아니다.
-참조자료형을 변수에 할당할 때는 변수에 값이 아닌 주소를 저장한다.
-동적으로 크기가 변하는 데이터를 보관하기 위해 변수가 아닌 다른 곳에
데이터를 저장하고 변수에는 그 주소만 할당한다.
Q: const로 선언된 변수 배열에 Array.push를 적용할 수 있는 이유는 무엇인가?
A: 배열은 참조형이기 때문에 데이터의 주소를 대입할 수 있기 때문이다!
-값이 저장된 주소값을 할당한다.
-비어있는 데이터 공간을 확보하고, 객체 속 프로퍼티에 대한 공간을 다시 확보한다.
-객체의 프로퍼티명과 주소를 매칭하고, 확보했던 두 번째 주소에 데이터를 할당한다.
-변수를 선언하면 데이터가 담길 공간을 확보하고, 확보된 데이터의 주소값을 가지고 변수명과 매칭시키는 선언과정까지 동일하지만, 할당과정에서 차이가 있다.
자바스크립트 속성(Property)과 메소드(Method)
-배열의 요소처럼 객체의 속성도 모든 형태의 자료형을 가질 수 있다.
-객체의 속성 중 함수 자료형인 속성을 메소드라고 부른다.
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
-자바스크립트에서 원시자료형이 아닌 모든 것은 참조자료형이고,
참조자료형에는 대표적으로 배열, 객체, 함수가 있다.