ES2015 Symbol & Number 타입


ES2015에서 부터 정수 리터럴을 이용해 8진수와 2진수를 표현할 수 있게 되었습니다. 그리고 Symbol을 사용해 실행 컨텍스트 내에서 고유하고 불변인 값을 정의할 수 있게 되었습니다.

숫자

기존 JavaScript에서는 10진수와 16진수의 표현만 가능했었지만 ES2015에서는 2진수와 8진수를 표현하는 정수 리터럴 표기법이 추가되었습니다.

기존 자바스크립트에서 숫자 앞에 0을 붙이는 것으로 모호하게 8진수를 사용하는 경우도 있었지만 ES2015에서 부터는 명확하게 0o 를 숫자앞에 붙이는 것으로 8진수를 사용할 수 있습니다.

// 8진수(Octal) - 숫자 앞에 0o을 붙여서 표기
> 0o123
83

// 2진수(Binary) - 숫자 앞에 0b을 붙여서 표기
> 0b101
5

Symbol

Symbol은 ECMAScript 2015 부터 추가된 원시 자료형의 하나입니다. 심볼은 고유하고 변경할 수 없는 값을 정의하는데 사용되며, 이러한 특성을 이용해서 객체의 프로퍼티 식별자로도 사용할 수 있습니다.

심볼은 아래와 같이 생성합니다.

const sym = Symbol();

아래 예에서와 같이 Symbol() 을 호출하여 생성한 값은 모두 유일한 값이되며 변경할 수 없습니다. 그리고 typeof 연산자를 사용해 심볼의 데이터 타입을 확인해 보면 Symbol 이라는 새로운 데이터 타입으로 정의된 것을 확인할 수 있습니다.

const foo = Symbol();
const bar = Symbol();

console.log(foo === bar);  //-> false
console.log(typeof foo);  //-> Symbol

심볼을 생성할 때 Symbol() 에 인수를 전달하여 설명을 추가할 수 있습니다.

const alice = Symbol("Alice");
console.log(alice);  //-> Symbol(Alice)