자바스크립트(ES6)는 7개의 데이터 타입 1을 제공한다.
7개의 데이터 타입은 원시 타입(primitive type)과
객체 타입(object/reference type)으로 분류할 수 있다.
자바스크립트는 하나의 숫자 타입만이 존재한다.
let integer = 123; // 정수
let negative = -123; // 음수
let double = 1.23; // 실수
console.log(integer);
console.log(negative);
console.log(double);
let binary = 0b1111011; //2진수
let octal = 0o173; // 8진수
let hex = 0x7b; //16진수
//자바스크립트는 2진수, 8진수, 16진수 데이터 타입을 제공하지 않기 때문에 이들 값을 참조하면 모두 10진수로 해석된다.
console.log(binary); //123
console.log(octal); //123
console.log(hex); //123
console.log(123 / 0); // infinity 양의 무한대
console.log(123 / -0); // -infinity 음의 무한대
console.log(123 / "text"); //NaN(not a number)
문자열(String) 타입은 텍스트 데이터를 나타내는데 사용한다.
var str = "string"; // 큰 따옴표
str = 'string'; // 작은 따옴표
str = `string ${str}`; // 백틱(ES6 템플릿 리터럴)
str = '1' // 문자열
var str = "string";
// 문자열은 유사배열이다.
console.log(str[0]); // s
for (var i = 0; i < str.length; i++) {
console.log(str[i]);
} // s t r i n g
// 문자열을 변경할 수 없다. 메서드를 이용하여 새로운 문자열을 재할당 하는 것은 가능
str[0] = "S";
console.log(str); // string
ES6부터 템플릿 리터럴template literal이라고 하는 새로운 문자열 표기법이 도입되었다.
템플릿 리터럴은 멀티라인 문자열multi-line string, 표현식 삽입expression interpolation,
태그드 템플릿tagged template 등 편리한 문자열 처리 기능을 제공한다
불리언 타입의 값은 논리적 참, 거짓을 나타내는 true와 false뿐이다.불리언 타입의 값은 참과 거짓으로 구분되는 조건에 의해 프로그램의 흐름을 제어하는 조건문에서 자주 사용한다.
undefined 타입의 값은 undefined가 유일하다.
선언 이후 값을 할당하지 않은 변수는 undefined 값을 가진다. 즉, 선언은 되었지만 값을 할당하지 않은 변수에 접근하거나 존재하지 않는 객체 프로퍼티에 접근할 경우 undefined가 반환된다.
var foo;
console.log(foo); // undefined
null 타입의 값은 null이 유일하다.
자바스크립트는 대소문자를 구별하므로 null은 Null, NULL 등과 다르다.
null은 의도적으로 변수에 값이 없다는 것을 명시할 때 사용한다.
variable = null;
console.log(variable); //null
let activeItem; // 아직 활성화 된 아이템이 있는지 없는지 모르는 상태!(정해지지않은 상태!)
activeItem = null; // 활성화된 아이템이 없는 상태! (확실하게 비어있다.)
심볼(symbol)은 ES6에서 새롭게 추가된 7번째 타입으로 변경 불가능한 원시 타입의 값이다.심볼은 주로 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키(property key)를 만들기 위해 사용한다. 심볼은 Symbol 함수를 호출해 생성한다. 이때 생성된 심볼 값은 다른 심볼 값들과 다른 유일한 심볼 값이다.
// 심볼 key는 이름의 충돌 위험이 없는 유일한 객체의 프로퍼티 키
var key = Symbol('key');
console.log(typeof key); // symbol
var a = Symbol('설명1');
var b = Symbol('설명1');
console.log(a === b); // false
자바스크립트는 객체(object) 기반의 스크립트 언어로서 자바스크립트를 이루고 있는 거의 “모든 것”이 객체이다. 원시 타입(Primitives)을 제외한 나머지 값들(배열, 함수, 정규표현식 등)은 모두 객체이다.
또한 객체는 pass-by-reference(참조에 의한 전달) 방식으로 전달된다.