原有数据类型 6 种

undefinednull、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object
新增Symbol 表示独一无二的值
需要使用Symbol 函数生成,类似与字符串的数据类型

  1. let str = Symbol('abc')
  2. str ///symbol(abc)

使用descirption

  1. const sym = Symbol('foo');
  2. sym.description //foo

Symbol.for(),Symbol.keyFor()

  1. Symbol.for("bar") === Symbol.for("bar") // true
  2. Symbol("bar") === Symbol("bar") // false

Symbol.for()会先检查给定的key是否已经存在,如果不存在才会新建一个值。调用Symbol.for(“cat”)30 次,每次都会返回同一个 Symbol 值,调用Symbol(“cat”)30 次,会返回 30 个不同的 Symbol 值
Symbol.keyFor()方法返回一个已登记的 Symbol 类型值的key

  1. let s1 = Symbol.for("bar")
  2. Symbol.keyFor(s1) // bar
  3. let s2 = Symbol('bar')
  4. Symbol.keyFor(s2) //undefined

Symbol.for()是全局登记,不管有没有在全局环境运行 ,在函数内部定义,也能在外面使用