欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ES6概念 ymbol.for()方法

程序员文章站 2022-04-15 16:25:51
symbol.for()方法: 使用symbol()方法可以创建一个symbol类型的值。 代码实例如下: let s = symbol(); let on...

symbol.for()方法:
使用symbol()方法可以创建一个symbol类型的值。
代码实例如下:

let s = symbol();
let one = symbol("");
let two = symbol("");
console.log(one == two);

即便是键值相同两个symbol类型的值也是不相同的。
更多关于symbol的内容可以参阅es2015 symbol一章节。
使用symbol.for()方法也可以创建一个symbol类型的值,但是此方法和symbol()的一个重要区别是,它不会重复创建具有相同键的值,也就是说此方法在创建一个值之前,首先会搜索是否已经具有指定键的symbol类型的值,如果有则返回这个symbol值,否则新创建一个symbol值。
代码实例:

let one = symbol.for("");
let two = symbol.for("");
console.log(typeof one);
console.log(one == two);

第一次调用symbol.for()方法会创建一个键值为""的symbol类型的值。
第二次调用的时候会搜索是否已经存在以""为键的symbol类型的值,如果存在就返回这个symbol值。

let one = symbol.for();
let two = symbol.for();
console.log(typeof one);
console.log(one == two);

不传递参数也是同样的道理。

let one = symbol("");
let two = symbol.for("");
console.log(one == two);

symbol.for()创建的值会被登记在全局环境*搜索,而symbol()创建的值不会,所以symbol.for("")依然会新创建一个symbol值,而不是返回symbol("")创建的值。