创建唯一 Symbol
生成保证唯一的值。
创建唯一 Symbol 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 4 节课。
什么是符号
符号是现代 JavaScript 引入的一种原始类型。即使两个符号具有相同的描述,每个符号也都是唯一的。
const s = Symbol()
console.log(typeof s)创建符号
通过调用符号函数可以创建符号。它不是构造函数,因此绝不能使用构造语法调用它。
const id = Symbol()
console.log(typeof id)可选描述
您可以传入描述字符串来辅助调试。描述纯粹用于提供信息,不会影响唯一性。
const id = Symbol("user id")
console.log(id.description)每个符号都独一无二
即使描述完全相同,两个符号也永远不相等。这种有保障的唯一性是符号最显著的特征。
const a = Symbol("x")
const b = Symbol("x")
console.log(a === b)不使用构造关键字
使用构造关键字调用符号函数会抛出错误,因为符号是原始值而不是对象。请始终将其作为普通函数调用。
const s = Symbol("ok")
console.log(typeof s === "symbol")符号是原始值
符号的类型是“符号”字符串。与其他原始值一样,符号不可变,也没有可供修改的属性。
const s = Symbol("p")
console.log(typeof s)读取描述
描述属性会返回您提供的文本;如果没有提供描述,则返回未定义值。该属性是只读的。
const named = Symbol("hello")
const anon = Symbol()
console.log(named.description)
console.log(anon.description)符号无法隐式转换为字符串
符号不会隐式转换为字符串,这可以避免意外误用。请有意使用 String 或 toString 来获取文本。
const s = Symbol("tag")
console.log(String(s))
console.log(s.toString())使用符号作为常量
符号非常适合作为唯一的常量值,例如用来表示永远不会冲突的不同状态。
const RED = Symbol("red")
const GREEN = Symbol("green")
console.log(RED === GREEN)存储符号
您可以将符号存储在变量、数组中,也可以将其作为对象内部的值。符号的唯一性会随之保留。
const states = [Symbol("on"), Symbol("off")]
console.log(states.length)
console.log(states[0] === states[1])唯一性为何重要
由于任意两个符号都不会冲突,它们非常适合用作绝不会与其他代码发生冲突的键。我们将在下一课中详细探讨这一点。
const key1 = Symbol("meta")
const key2 = Symbol("meta")
const obj = {}
obj[key1] = "a"
obj[key2] = "b"
console.log(obj[key1], obj[key2])快速检查
测试您对创建符号的了解。
回顾
回顾:符号是唯一的原始值。
- 通过调用 Symbol 创建,绝不能使用 new
- 可选的描述仅用于辅助调试
- 每个符号都是唯一的
- 符号的 typeof 结果是 symbol
const a = Symbol("x")
const b = Symbol("x")
console.log(a === b)常见问题解答
「创建唯一 Symbol」课时是免费的吗?
是的 — 「创建唯一 Symbol」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 4 节课。
「创建唯一 Symbol」这节课中我会学到什么?
生成保证唯一的值。 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 JavaScript Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 JavaScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「创建唯一 Symbol」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 JavaScript Academy 课中编写并运行代码吗?
能。每节 JavaScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 创建唯一 Symbol
- 将 Symbol 用作对象键
- 全局 Symbol 注册表
- 众所周知的 Symbol