자바스크립트에는 다양한 종류의 데이터 타입이 있다.
그 전에 데이터 타입을 알 수 있는 typeof
연산자에 대해 알고가자.
🟡 typeof
연산자 🟡
typeof 연산자를 적용하면 변수가 undefined
, boolean
, number
, string
, object
, function
중 어떤 데이터 타입인지 반환한다.
let msg = "message";
console.log(typeof msg); // "string"
console.log(typeof 100); // "number"
console.log(typeof null); // "object"
console.log(typeof []); // "object"
숫자
문자열
" " or ' ' 로 감싼 모든 표현
🟡🟡
🎈 문자열 + 숫자 조합
String과 Number가 더해지면 String이 된다.
console.log("2" + "2"); // "22"
console.log(2 + 2); // 4
console.log("2 더하기 2는 " + 2 + 2); // 2 더하기 2는 22
연산은 왼쪽에서부터 차례로 실행되므로 2 더하기 2는 22가 된다.
변수가 선언되었지만 그 안이 비어있는 상태
아무것도 아닌 빈 객체를 가리키므로 typeof null
은 "object"
가 나온다.
let nothing = '';
변수만 선언된 상태, 값을 할당하지 않았을 때
let nothing;
null == undefined // true
null === undefined // false
고유한 식별자가 필요할 때, 우선순위를 주고 싶을 때
const symbol1 = Symbol('id');
const symbol2 = Symbol('id');
console.log(symbol1 === symbol2); // false
다수의 property나 method 를 하나의 이름으로 묶어놓은 집합체
객체를 선언할 때는 중괄호 {} 를 사용하며, 이름(key):값(value) 의 형태로 작성한다. 이 데이터 한 쌍을 객체의 property 라고 한다.
변수를 선언하면 데이터가 담길 공간을 확보하고,
확보된 데이터의 주소값을 가지고 변수명과 매칭시키는 선언과정을 실행한다. 두 타입은 할당 과정에서 차이가 있다.
기본형은,
let a;
a = 10;
변수 a를 선언하면 공간을 확보하고, 확보된 데이터의 주소값을 가지고 변수명과 매칭시킨다. 그리고 매칭된 주소로 이동하여 데이터 10을 저장한다.
비어있는 데이터 확보 -> 변수명과 매칭 -> 주소에 데이터 저장
참조형은,
let obj = {
a: 1 , b: 'hi'
}
각 property의 key, value 값을 담을 공간을 확보한다. property와 확보된 주소를 매칭하고 주소마다 데이터를 할당한다.
이러한 과정을 기본형 데이터가 담길 때까지 반복한다.
참조형은 기본형 데이터의 집합이다!