06. 데이터 타입
ES6의 데이터 타입 7개
구분 | 데이터 타입 |
---|
원시타입 | number |
| string |
| boolean |
| undefined |
| null |
| symbol |
객체 | function, array, object |
6.1 숫자 타입
- 정수, 실수, 2진수, 8진수, 16진수 모두 메모리에 배정밀도 64비트 부동소수점 형식 으로 저장된다.
- 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입은 존재하지 않으며 10진수로 해석된다.
- Infinity(양의 무한대), -Infinity(음의 무한대), NaN 표현 가능
대소문자를 구별하므로 nan, NAN, Nan 표기하지 않도록 주의하기!
6.2 문자열 타입
- 문자열은 0개 이상의 16비트 유니코드 문자의 집합
- 문자열 표기 시 ', " 모두 사용가능하나 ' 사용을 권장한다.
6.3 템플릿 리터럴
6.5 undefined
- 자바스크립트 엔진이 변수 초기화 시 사용하는 값으로 변수에 "값이 없음"을 표시하고 싶을 땐 null 을 사용하자
6.6 null
- 마찬가지로 대소문자를 구별하므로 Null, NULL 등으로 사용불가
- 변수에 null을 할당하는 것은 값에 대한 참조를 명시적으로 제거하는 것을 의미한다. 가비지 콜렉션이 수행됨.
6.7 symbol
- 값이 외부에 노출되지 않고 변경 불가한 원시 타입의 값
- 객체의 유일한 프로퍼티 키를 만들 때 주로 사용된다.
- Symbol 함수를 호출해 생성한다. (이외 원시값들은 리터럴을 통해 생성)
6.9 데이터 타입의 필요성
- 숫자타입은 64비트 배밀정도 부동소수점 형식 -> 8바이트
ex)
변수에 값을 저장하는 경우: 숫자 100을 변수에 저장하기 위해 8바이트의 저장공간을 확보하고 100을 2진수로 저장한다.
변수의 값을 찾는 경우: 값이 저장된 선두 메모리셀 주소를 찾아간 후 8바이트의 단위로 읽어들인다.
데이터 타입이 필요한 이유
1. 값을 저장할 때 확보해야 할 메모리 공간의 크기를 결정하기 위해
2. 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
3. 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
6.10 동적 타이핑
- 자바스크립트는 선언이 아닌 할당에 의해 타입이 결정된다.
- 값의 재할당으로 인해 변수의 타입이 동적으로 변한다.
7. 연산자
7.1 산술 연산자
- ++, -- 는 부수효과 O
- +, - 부수효과 X
- 숫자가 아닌 피연산자에 +를 붙이는 경우 피연산자를 숫자로 변환하여 반환한다.
(피연산자를 변경하는 것이 아닌 숫자 타입으로 변환한 값을 생성하는 것 -> 부수효과 아님)
const a = '1';
console.log(typeof +a); // number
7.2 할당 연산자
7.3 비교 연산자
- 동등 비교 (loose equality): ==
- 일치 비교 (strict equality): ===
Object.is
-0 === +0;// true
Object.is(-0, +0);// false
NaN === NaN; // false
Object.is(NaN, NaN) // true
7.4 삼항 조건 연산자
7.5 논리 연산자
7.6 쉼표 연산자
var x,y,z;
x=1, y=2, z=3; //3
7.7 그룹 연산자
7.8 typeof 연산자
console.log(typeof null); // object
7.9 지수 연산자 (== Math.pow)
- 좌항 피연산자를 밑으로, 우항 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환한다.
console.log(2 ** 2); // 4
console.log(2 ** 3); // 8
8. 제어문
8.2 조건문
8.4 break문
레이블문: 식별자가 붙은 문
foo: {
console.log("bar");
}