6장 데이터 타입
데이터 타입 종류(ES6 기준 7개 타입)
원시타입(6개)
- 숫자 타입 : 실수타입
- 문자열 타입
- 불리언 타입
- undefined 타입
- null 타입
- 심볼 타입 : ES6에서 추가된 7번째 타입
객체 타입(1개)
문자열 타입
작은따옴표(''), 큰따옴표(""), 백틱(``) 로 텍스트를 감싼다.
템플릿 리터럴
멀티라인 문자열
표현식 삽입
- 표현식을 삽입하려면 ${}으로 표현식으로 감싼다.
- 표현식 삽입은 템플릿 리터럴 내에서 사용해야함.
var first = 'Ung-mo';
var last = 'Lee';
console.log(`My name is ${first} ${last}.`);
undefinded 타입
- 변수 값이 없다는 것을 명시하려면 undefinded 이 아닌 null로 할당
- 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미
심볼 타입
- 변경 불가능한 원시 타입의 값
- 심벌 값은 다른 값과 중복되지 않은 유일무이한 값
- 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용
동적 타입 언어(JS)
- JS의 변수는 선언이 아닌 할당에 의해 타입 결정(타입 추론)
- 재할당에 의해 변수의 타입은 언제든지 동적으로 변함.
7장 연산자
형변환
- 같은 타입이면 형변환 x
"12" > "2" -> False, 사전 순으로 봤을 때 "1"이 먼저 나오기 때문에 False
- 타입이 다르면 숫자 타입으로 형변환
"12"<2 -> True, "12" -> 12로 형변환
- 단, 더하기 연산자일 경우는 문자열로 형변환
3 + "3" = "33"
- 이와 같은 것을 암묵적 타입 변환 또는 타입 강제 변환이라고 한다.
비교연산자
- 동등 비교(==) 연산자 : 먼저 암묵적 타입 변환을 통해 타입을 일치시킨 후 값은 값인지 비교.
그래서, 동등 비교는 결과를 예측하기 어렵다.
- 일치 비교(===) 연산자 : 타입과 값 일치하는 경우만 true 반환, 즉 암묵적 타입변환을 하지 않고 값을 비교
NaN 비교
NaN === NaN; // false
그래서 Number.isNaN(NaN) // true 사용해서 비교
object.is 메서드(ES 6 부터 도입)
- 0은 양수 0, 음수 0 이 존재하면, 비교 시에는 object.is 메서드를 사용해야함.
-0 === +0;
Object.is(-0 +0);
typeof 연산자
- null 타입 확인은 typeof 연산자가 아닌 일치 비교 연산자(===) 사용
var foo = null;
typeof foo === null;
foo === null;
지수 연산자(ES7 도입)
2 ** 4 ;
출처 : 모던 자바스크립트 Deep Dive(P.60 ~ P.92)
저자 : 이웅모 지음, 위키북스