자바스크립트는 7개의 데이터타입을 제공하고, 데이터타입은 원시타입과 객체타입으로 분류할 수 있다.
var integer = 10; // 정수
var double = 10.12; // 실수
var negative = -20; // 음의 정수
자바스크립트는 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공하지 않는다.
var binary = 0b01000001; // 2진수
var octal = 0o101; // 8진수
var hex = 0x41; // 16진수
// 표기법만 다를 뿐 모두 같은 값이다
console.log(binary); // 65
console.log(octal); // 65
console.log(hex); // 65
자바스크립트는 모든 수를 실수로 처리한다.
console.log(1 === 1.0); // true
추가적으로 세 가지 특별한 값도 표현할 수 있다.
console.log(10 / 0) // Infinity
console.log(10 / -0) // -Infinity
console.log(1 * 'String') // NaN
// 문자열 타입
var string;
string = '문자열'
string = "문자열"
string = `문자열`
string = '작은따옴표로 감싼 문자열 내의 "큰따옴표"는 문자열로 인식된다.';
string = "큰따옴표로 감싼 문자열 내의 '작은따옴표'는 문자열로 인식된다.";
줄바꿈 등의 공백을 사용하려면 이스케이프 시퀀스를 사용해야 한다.
문자열 연산자 +을 사용해 연결할 수 있다.
var first = 'Ung-mo';
var last = 'Lee';
console.log('My name is '+ first + ' ' + last + '.');
이스케이프 시퀀스를 사용하지 않고도 줄바꿈이 허용되며, 모든 공백도 있는 그대로 적용된다.
var template = `<ul>
<li><a href="$">Home</a></li>
<ul>`;
console.log(template);
// 출력 결과
<ul>
<li><a href="#">Home</a></li>
</ul>
표현식으로 문자열을 삽입하려면 ${}로 표현식을 감싼다.
var first = 'Ung-mo';
var last = 'Lee';
console.log(`My name is ${first} ${last}.`);
var foo = true;
console.log(foo); // true
foo = false;
console.log(foo); // false
var foo = 'Lee';
// 이전 참조를 제거. foo변수는 더 이상 'Lee'를 참조하지 않는다.
foo = null;
// 심벌 값 생성
var key = Symbol('key');
console.log(typeof key); // symbol
// 객체 생성
var obj = {};
// 이름이 충돌할 위험이 없는 유일무이한 값인 심벌을 프로퍼티 키로 사용한다.
obj[key] = 'value';
console.log(obj[key]); // value
33장 참조
11장 참조
변수를 선언할 때 데이터 타입을 사전에 선언하는 C나 JAVA같은 언어
변수의 할당에 의해 타입이 결정되는 자바스크립트, 파이썬, PHP, 루비 등의 언어
값을 확인하기 전에는 변수의 타입을 확신할 수 없다. 그리고 개발자의 의도와는 상관없이 자바스크립트 엔진에 의해 암묵적으로 타입이 자동적으로 변환되기도 한다.