심벌이란

심벌 값의 생성

Symbol 함수

// Symbol 함수를 호출하여 유일무이한 심벌 값을 생성
const mySymbol = **Symbol();**
console.log(typeof mySymbol); // **symbol**

//생성된 심벌 값은 외부로 노출되지 않아 확인할 수 없다.
console.log(mySymbol); // **Symbol()**

Symbol 함수는 다른 생성자 함수들과 달리 new 연산자와 함께 호출하지 않는다.

Symbol 함수에는 선택적으로 문자열을 인수로 전달할 수 있다.

// 심벌 값에 대한 설명이 같더라도 유일무이한 심벌 값을 생성한다.
const mySumbol1 = **Symbol('mySymbol');**
const mySymbol2 = **Symbol('mySymbol');**

console.log(**mySymbol1 === mySymbol2**); // **false**

심벌 값도 객체처럼 접근하면 암묵적으로 래퍼 객체를 생성한다.

const mtSymbol = Symbol('mySymbol');

// 심벌도 래퍼 객체를 생성한다.
// decription 프로퍼티와 toString 메서드는 Symbol.prototype의 프로퍼티다.
console.log(**mySymbol.description**); // **mySymbol**
console.log(**mySymbol.toString()**);  // **Symbol(mySymbol)**
const mySymbol = Symbol();

// 심벌 값은 암묵적으로 문자열이나 숫자 타입으로 변환되지 않는다.
console.log(mySymbol + ''); // TypeError: Cannot convert a Symbol value to a string
coneole.log(+mySymbol);     // TypeError: Cannot convert a Symbol value to a number