This page was translated from English by the community.Learn more and join the MDN Web Docs community.
Symbol.for()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since сентябрь 2015 г..
МетодSymbol.for(key) ищет ранее созданный разделяемый символ по заданному ключу и возвращает его, если он найден. В противном случае создаётся новый разделяемый символ для данного ключа в глобальном реестре символов.
In this article
Синтаксис
Symbol.for(key);
Параметры
- key
Строка, обязательный. Идентификатор символа (также используется в качестве описания символа).
Описание
В противоположность вызовуSymbol(), функцияSymbol.for() создаёт символ, доступный в глобальном списке реестра символов.Symbol.for() не создаёт новый символ при каждом вызове, вместо этого, метод сначала проверяет, существует ли символ с заданным идентификатором в реестре — и возвращает его, если тот присутствует. Если символ с заданным ключом не найден,Symbol.for() создаст новый глобальный символ.
Глобальный реестр
Глобальный реестр символов — это список со следующей структурой записей и пустой при инициализации:
| Поле | Значение |
|---|---|
| [[key]] | Строка, используемая в качестве идентификатора. |
| [[symbol]] | Символ, хранящийся глобально. |
Примеры
Symbol.for("foo"); // создаёт новый глобальный символSymbol.for("foo"); // возвращает символ, созданный прежде// Одинаковый глобальный символ, но не локальныйSymbol.for("bar") === Symbol.for("bar"); // trueSymbol("bar") === Symbol("bar"); // false// Идентификатор также используется в качестве описанияvar sym = Symbol.for("mario");sym.toString(); // "Symbol(mario)"Чтобы предотвратить конфликт имён ваших глобальных символов и глобальных символов из других библиотек, может оказаться неплохой идеей использование префиксов:
Symbol.for("mdn.foo");Symbol.for("mdn.bar");Спецификации
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-symbol.for> |