원시타입 : number, string, boolean, undefined, null symbol
객체 타입 : 객체, 함수, 배열등
하나의 숫자 타입 존재 (C, Java와 다름)
배정밀도 64비트 부동소수점 형식
Infinity : 양의 무한대
-Infinity : 음의 무한대
NaN : 산술 연산 불가 (not-a-number)
10/0 // Infinity : 양의 무한대
10/-0 // 음의 무한대
1*'String' // NaN
let string;
string = '문자열';
string = "문자열";
string = `문자열`;
//자바스크립트의 문자열은 원시타입이며, 변경 불가능한 값
`` (보통 문자열과 달리 백틱 사용)
일반 문자열 내에서는 개행 허용 x
일반 문자열 내에서 줄바꿈 공백표현 \ (이스케이프 시퀀스)사용 (\n, \r)
템플릿 리터널은 이스케이프 시퀀스가 없어도 개행 공백 그대로 적용
let first = 'jaemin';
let last = 'Lee';
console.log('My name is ' + first + ' ' + last + '.');
console.log(`My name is ${first} {last}.`);
console.log(`1 + 2 = ${1 + 2}`); // 1 + 2 = 3
true, false
undefined
let a
console.log(a) // undefined
변수에 값이 없다는 것을 의도적으로 명시.
null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상
변경 불가능한 원시타입 값. 심벌 값은 다른 값과 중복되지 않은 유일무이한 값
let key = Symbol('key');
console.log(typeof key); // symbol
//객체 생성
let object = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프러퍼티 키로 사용.
obj[key] = 'value';
console.log(obj[key]); // value
자바스크립트를 이루고 있는 거의 모든 것이 객체
정적 타입 언어 : 변수를 선언할 때 변수에 할당할 수 없는 값의 종류, 즉 데이터 타입을 사전에 선언. (명시적 타입 선언) 컴파일 시점에 타입 체크
동적 타입 언어 : 자바스크립트의 변수는 선언이 아닌 할당에 의해 타입이 결정(타입 추론)됨. 그리고 재할당에 의해 변수의 타입은 언제든지 동적으로 변화.
동적 타입 언어의 문제점
동적 타입 언어의 주의점
참고문헌 : 모던 자바스크립트 Deep Dive . 이웅모 지음