当前位置: 首页 > article >正文

JavaScript数据类型- Symbol 详解

文章目录

    • 前言
    • 1.唯一性
    • 2. 描述
    • 3. 作为对象属性键
    • 4. 全局注册
    • 6. 不可变性
    • 7. 隐式转换

前言

Symbol是ES6新增内容,代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题
在JavaScript发展的过程中,其中的ES6带来了一系列的新特性,其中之一就是Symbol。Symbol是一种特殊的原始数据类型,它提供了一种创建全局唯一标识符的方式,这对于避免命名冲突尤其有用。不同于传统的字符串或数字,每个Symbol都是独立且唯一的,即使它们具有相同的描述。这使得Symbol非常适合用于对象属性的键,从而避免了与其他属性键发生冲突的可能性。本文旨在深入探讨Symbol的各个方面,包括它的创建、使用方法以及与其他数据类型的交互方式,帮助更好地理解和利用这一特性。

1.唯一性

每次调用 Symbol() 都会返回一个新的、唯一的 Symbol 值

const sym1 = Symbol();
const sym2 = Symbol();
console.log(sym1 === sym2); // false

2. 描述

可以给 Symbol 提供一个可选的字符串参数作为描述,这有助于调试,但不会影响 Symbol 的唯一性

const sym = Symbol('mySymbol');
console.log(sym.toString()); // "Symbol(mySymbol)"

3. 作为对象属性键

Symbol 可以用作对象属性的键,并且不会与任何字符串键冲突

const key = Symbol('key');
const obj = {
  [key]: 'value'
};
console.log(obj[key]); // 'value'
console.log(obj['key']); // undefined

4. 全局注册

使用 Symbol.for(key) 可以创建一个全局唯一的 Symbol,如果之前已经存在相同的键,则返回已存在的 Symbol。

const sym1 = Symbol.for('foo');
const sym2 = Symbol.for('foo');
console.log(sym1 === sym2); // true

6. 不可变性

Symbol 是不可变的,一旦创建就无法改变其值。

7. 隐式转换

当尝试将 Symbol 转换成其他类型(如数字或字符串)时,会抛出 TypeError。不过,Symbol 可以通过 .toString() 或 .description 获得其字符串表示形式。


http://www.kler.cn/a/381869.html

相关文章:

  • 开源协议类型及长安链开源协议介绍
  • BERT框架
  • 【设计模式系列】建造者模式(十)
  • Jest进阶:测试 Vue 组件
  • 前端通过nginx部署一个本地服务的方法
  • 深度学习基础知识-损失函数
  • 各种网络设备的工作原理
  • Hive SQL中判断内容包含情况的全面指南
  • MR30分布式IO模块与高效PLC协同
  • 鸥柏(OBOO)户外触摸广告屏科技创新 高速服务区收费站案例
  • SAP ABAP开发学习——WDA 二 控制器
  • 【笔记】变压器-热损耗-频响曲线推导 - 02 预备知识
  • 如何完全禁用Ant Design Vue 4自带样式
  • 如何使用Web-Check和cpolar实现安全的远程网站监测与管理
  • 华为HarmonyOS借助AR引擎帮助应用实现虚拟与现实交互的能力2-管理AR会话
  • Python+Appium+Pytest+Allure自动化测试框架-安装篇
  • 计算机毕业设计Hadoop+大模型地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据
  • 从源码到成品应用:互联网医院系统与在线问诊APP的开发全解析
  • Java学习路线:Maven(一)认识Maven
  • Unity 中使用 WebGL 构建并运行时使用的图片必须使用web服务器上的
  • [论文阅读]Label-Only Membership Inference Attacks
  • vue2中使用vue-awesome-swiper实现轮播
  • C#里计算SHA256,主要用来做文件校验
  • Java基础-集合
  • 【Python基础】零基础快速入门Python(下)
  • 计算机视觉算法:从图像处理到智能识别