0Pricing
JavaScript Academy · 课时

创建唯一 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 反馈 — 无需本地设置。

此课程中的所有课时

  1. 创建唯一 Symbol
  2. 将 Symbol 用作对象键
  3. 全局 Symbol 注册表
  4. 众所周知的 Symbol
← 返回 JavaScript Academy