原有数据类型 6 种
undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)
新增Symbol 表示独一无二的值
需要使用Symbol 函数生成,类似与字符串的数据类型
let str = Symbol('abc')
str ///symbol(abc)
使用descirption
const sym = Symbol('foo');
sym.description //foo
Symbol.for(),Symbol.keyFor()
Symbol.for("bar") === Symbol.for("bar") // true
Symbol("bar") === Symbol("bar") // false
Symbol.for()会先检查给定的key是否已经存在,如果不存在才会新建一个值。调用Symbol.for(“cat”)30 次,每次都会返回同一个 Symbol 值,调用Symbol(“cat”)30 次,会返回 30 个不同的 Symbol 值
Symbol.keyFor()方法返回一个已登记的 Symbol 类型值的key
let s1 = Symbol.for("bar")
Symbol.keyFor(s1) // bar
let s2 = Symbol('bar')
Symbol.keyFor(s2) //undefined
Symbol.for()是全局登记,不管有没有在全局环境运行 ,在函数内部定义,也能在外面使用