
값의 종류를 말하는데 자바스크립트의 모든 값은 데이터 타입을 갖는다.
자바스크립트는 c나 자바와 달리 하나의 숫자 타입만 존재하고 정수만 표현하기 위한 데이터 타입이 존재하지 않는다.
let a = 0b01000001; // 2진수
let b = 0o101; // 8진수
let c = 0x41; // 16진수
console.log(a) // 65
console.log(b) // 65
console.log(c) // 65
console.log(a === b) // true
// 2진수, 8진수 등을 표현하기 위한 데이터 타입을 제공하지 않기 때문에 모두 10진수로 해석된다.
정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있다.
// 숫자 타입은 모두 실수로 처리한다.
console.log(1 === 1.0) // true
숫자 타입은 세 가지 특별한 값도 표현할 수 있다.
• Infinity: 양의 무한대
• -Infinity: 음의 무한대
• NaN: 산술 연산 불가(not-a-number)
console.log(10 / 0) // Infinity
console.log(10 / -0) // -Infinity
console.log(1 * 'String') // NaN
문자열 타입은 텍스트 데이터를 나타내는 데 사용한다. 다른 타입과 달리 문자열을 따옴표로 감싸는 이유는 식별자와 구분하기 위해서다.
var string;
string = '가나다'
string = "가나다"
string = `가나다`
let string = hello; // 참조에러
불리언 타입의 값은 논리적 참, 거짓을 나타내는 ture와 false뿐이다.
var a = true;
console.log(a) // true
a = false;
console.log(a) // false
undefined 타입의 값은 undefined가 유일하다.
var a;
console.log(a) // undefined
undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값이다.
null 타입의 값은 null이 유일하다. Null, NULL null은 변수에 값이 없다는 것을 명시하기 위해서 사용한다. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미다.
var a = '가나다';
// 이전 참조를 제거. a 변수는 더 이상 '가나다'를 참조하지 않는다.
a = null;
함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 한다.
<!DOCTYPE html>
<html lang="ko">
<head>
<title>Document</title>
</head>
<body>
<script>
var element = document.querySelector('.myClass');
// HTML 문서에 myClass 클래스를 갖는 요소가 없다면 null을 반환한다.
</script>
</body>
</html>
심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.
// 심벌 값 생성
var key = Symbol('key')
console.log(typeof key) // symbol
// 객체 생성
var obj = {}
//이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value'
console.log(obj[key]); // value
자바스크립트의 데이터 타입은 크게 원시 타입과 객체 타입으로 분류된다. 자바스크립트는 객체 기반의 언어이고 자바스크립트를 이루고 있는 거의 모든 것이 객체이다.