데이터 타입
이란, 값의 종류를 말한다.
자바스크립트의 모든 값은 데이터 타입을 갖는다.
자바스크립트는 다른 언어와는 다르게 하나의 숫자 타입(모든 수가 실수)만 존재한다.
console.log(1 === 1.0); // true
Infinity
: 양의 무한대
-Infinity
: 음의 무한대
NaN
: 산술 연산 불가(not-a-number)
문자열 타입
텍스트 데이터를 나타내는 데 사용.
자바스크립트의 문자열은 원시 타입이고 변경 불가능한 값이다.
백틱
을 사용하여 문자열을 표현한다.
멀티라인 문자열, 표현식 삽입, 태그드 템플릿 등 편리한 문자열 처리 기능을 제공 한다.
${}
으로 표현식을 감싼다.
문자열 연산자보다 가독성이 좋고 간편하게 문자열을 조합할 수 있다.
let first = 'sarah';
let last = 'kim';
console.log(`My name is ${first} ${last}`);
// My name is sarah kim
논리적 참, 거짓을 나타내는 true
와 false
뿐인 값이다.
변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이뤄질 때까지 빈상태로 두지 않고 자바스크립트 엔진이 undefined
로 초기화 한다.
따라서 변수를 선언한 이후 값을 할당하지 않은 변수를 참조하면 undefined
를 반환한다.
let foo;
console.log(foo); // undefined
개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화 할 때 사용하는 값이다.
❗️ 만약 변수에 값이 없다는 것을 명시하고 싶을때는 null
을 할당해야 한다.
❗️ 변수를 참조했을 때 undefined
가 반환된다면 참조한 변수가 선언 이후 값이 할당된 적이 없는, 즉 초기화 되지 않은 변수라는 것을 알 수 있다.
let foo = 'sarah';
foo = null; // 이전 참조를 제거
null
을 반환하기도 한다.null
을 반환한다.ES6
에서 추가된 7번째 타입. Symbol
함수를 호출해 생성한다.
// 심벌 값 생성
let key = Symbol('key');
console.log(typeof key) // symbol
// 객체 생성
let obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]); // value
✏️ 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정된다. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다.
typeof 연산자는 변수의 데이터 타입을 반환한다.
변수의 데이터 타입을 반환하는 것이 아니라 변수에 할당된 값의 데이터 타입을 반환하는 것이다.
But, 동적 타입 언어는 유연성은 높지만 신뢰성은 떨어진다. 변수의 타입이 고정되어 있지 않고 언제든지 동적으로 변하기 때문이다.
변수보다는 상수(const
)를 사용하여 값의 변경을 억제하는 방법도 있다.