Symbol
Symbol是一种类似于字符串的数据类型
Symbol特点:
-
Symbol的值是唯一的,常用来解决命名冲突的问题
-
Symbol的值不能与其他数据类型进行运算(包括Symbol类型)
-
Symbol定义的对象不能使用 for...in 遍历
初始
let s = Symbol() // 创建Symbol
console.log(s, typeof s)
结果:
特性介绍
// Symbol()
let s2 = Symbol('张三')
let s3 = Symbol('张三')
console.log(s2, typeof s2)
console.log(s3, typeof s3)
console.log(s2 === s3)
结果:
结果为 false , 因为 Symbol( )相同参数,返回值不同
比如身份证吧,一个人它的名字可以相同,但是身份证是唯一的
而Symbol( ),括号内就是名字,返回值就是身份证
// Symbol.for()
let s4 = Symbol.for('李四')
let s5 = Symbol.for('李四')
console.log(s4)
console.log(s5)
console.log(s4 === s5);
结果:
结果为 true , 因为 Symbol.for( )相同参数,返回值相同
Symbol.for( )方法会根据给定的键 去 Symbol注册表中 找对应的 Symbol,如果找到了,则返回它,否则 新建一个与该键关联的 Symbol 并放到 Symbol 注册表中
let s6 = Symbol('王五')
let s7 = Symbol.for('王五')
console.log(s6 === s7)
结果:false
注意:Symbol( )与Symbol.for( )相同参数,返回值不同
总结
- Symbol( )相同参数,返回值不同
- Symbol.for( )相同参数,返回值相同
- Symbol( )与Symbol.for( )相同参数,返回值不同
本文来自博客园,作者:ycccc丶,转载请注明原文链接:https://www.cnblogs.com/imycc/p/16478191.html