作者:jason2502893743 | 来源:互联网 | 2024-11-11 15:29
ES6引入了Symbol这一新型原始数据类型,其核心特性在于能够生成独一无二的值。起初,对于“独一无二”的概念我并未完全理解,但通过查阅相关资料并结合个人见解,逐步掌握了其精髓。Symbol的独特之处不仅在于其唯一性,还在于它在编程中的多种应用场景,如防止属性名冲突等。本文将深入探讨Symbol的特性和实际应用,帮助读者全面理解这一重要特性。
ES6引入了一种新的原始数据类型Symbol,表示独一无二的值,当时我对“独一无二”这个描述没有理解,后来看了一些帖子,根据自己的理解写了这个文章。
Symbol更看重的是他的性质,也就是独一无二绝对不可能有跟他一样的值的这个特性,而并不关心它具体等于什么值,也就是说它更像是一个标签和标记。
例子如下,这两个Symbol值仅仅是用来判断m值的一些特性,所以这两个值具体是多少根本不重要,重要的是他们一定不能相等,假如我要判断传入switch函数的m的值,为了避免耦合,会避免魔术字符串而使用变量来表示case后面的值,这种情况下,如果在后面的某一段代码中不小心更改了a.blue和a.yellow的值导致这两个值一样,就会使得switch方法运行出错。但是现在由于a.blue和a.yellow都是Symbol类型的值,所以他们肯定不会相等,这样就避免了switch方法会出现问题。
let a = {
blue: Symbol("Foo"),
yellow: Symbol("Foo")
}
let m = "China"
if (m.length > 0) {
m = a.blue
} else {
m = a.yellow
}
switch (m) {
case a.blue:
console.log("hello")
break
case a.yellow:
console.log("world")
}