Spec-Zone.ru › JavaScript

Symbol.for()

Baseline Широко доступно

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с сентября 2015 года.

Статический метод Symbol.for() ищет существующие символы в реестре символов, охватывающем всю среду выполнения, по заданному ключу и возвращает его, если он найден. В противном случае будет создан новый символ с этим ключом в глобальном реестре символов.

Попробуйте

console.log(Symbol.for("bar") === Symbol.for("bar"));
// Expected output: true

console.log(Symbol("bar") === Symbol("bar"));
// Expected output: false

const symbol1 = Symbol.for("foo");

console.log(symbol1.toString());
// Expected output: "Symbol(foo)"

Синтаксис

Symbol.for(key)

Параметры

key
Строка, обязательно. Ключ для символа (также используется для описания символа).

Возвращаемое значение

Существующий символ с заданным ключом, если он найден; в противном случае будет создан и возвращен новый символ.

Описание

В отличие от Symbol(), функция Symbol.for() создает символ, доступный в глобальном реестре символов. Symbol.for() также не обязательно создает новый символ при каждом вызове, а сначала проверяет, присутствует ли символ с заданным key в реестре. В этом случае возвращается этот символ. Если символ с заданным ключом не найден, Symbol.for() создаст новый глобальный символ.

Примеры

Использование Symbol.for()

Symbol.for("foo"); // create a new global symbol
Symbol.for("foo"); // retrieve the already created symbol

// Same global symbol, but not locally
Symbol.for("bar") === Symbol.for("bar"); // true
Symbol("bar") === Symbol("bar"); // false

// The key is also used as the description
const sym = Symbol.for("mario");
sym.toString(); // "Symbol(mario)"

Чтобы избежать конфликтов имен между вашими глобальными ключами символов и другими глобальными символами (из библиотечного кода), может быть хорошей идеей добавлять префикс к вашим символам:

Symbol.for("mdn.foo");
Symbol.for("mdn.bar");

Спецификации

Спецификация
ECMAScript® 2027 Language Specification
# sec-symbol.for

Совместимость с браузерами

Настольные компьютеры Мобильные устройства Сервер
Chrome Edge Firefox Opera Safari Chrome Android Firefox for Android Opera Android Safari on iOS Samsung Internet WebView Android WebView on iOS Bun Deno Node.js
for
40
12
36
27
9
40
36
27
9
4.0
40
9
1.0.0
1.0
0.12.0

См. также

  • Symbol.keyFor()

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/for

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API