个人理解的ES6中新增的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")
    }

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值