Символы в JavaScript

Как уже говорилось в предыдущей статье, символы в JavaScript неизменяемы и уникальны. Но в ответ на это утверждение можно спросить: «Что вы имеете в виду под неизменяемостью? «. Переменная считается неизменяемой, если ее значение не может быть изменено. Но в javascript мы постоянно меняем значения переменных, так почему же они неизменяемы?

Когда мы объявляем переменную и присваиваем ей какое-то значение, на самом деле за занавесом происходит создание пространства в памяти, в котором хранится значение. Переменная просто указывает на это пространство в памяти. Однако, когда мы переназначаем значение переменной, это не изменяет значение, хранящееся в пространстве памяти, на которое указывает переменная, а создает новое пространство памяти, сохраняет в нем новое значение и теперь начинает указывать на это пространство.

Что такое символы?

Поскольку теперь концепция неизменяемости вам ясна, давайте сосредоточим наше внимание на примере из реальной жизни. Мои друзья в Индии хорошо знают, что у них есть карта AADHAR. Мои американские друзья должны знать номер социального страхования. Номер карты AADHAR и номер социального страхования уникальны и неизменяемы, т.е. нет двух одинаковых номеров, и их нельзя изменить. Это наши цифровые отпечатки пальцев.

Символы в некоторой степени похожи на эти цифровые отпечатки пальцев, каждая переменная типа символа уникальна и неизменяема.

Символы не хранят никаких буквальных значений, т.е. они не могут хранить числа, строки, булевы значения и т.д.

Создание переменных типа символ

Переменные типа символ могут быть созданы только с помощью функции Symbol(), Symbol() принимает необязательный аргумент, который называется параметром описания. Этот параметр часто используется для описания того, для чего был создан символ. Для лучшего понимания посмотрите пример кода ниже.

var x = Symbol(); // no optional argument passed
var y = Symbol("optionalArgument"); // optional argument i.e. description provided
console.log(typeof x);
console.log(typeof y);
Вход в полноэкранный режим Выход из полноэкранного режима
symbol
symbol
Войти в полноэкранный режим Выход из полноэкранного режима

Каждый раз, когда вызывается Symbol(), возвращается уникальный экземпляр объекта symbol. Если вы запустите приведенный ниже код, то на выходе всегда будет false, как и в моем случае

console.log(Symbol() === Symbol());
Вход в полноэкранный режим Выйти из полноэкранного режима
false
Войти в полноэкранный режим Выход из полноэкранного режима

Зачем вообще существуют символы?

Если символы не содержат никакого буквального значения, то каково назначение этого типа данных. Ответ кроется в природе этого типа данных. Как было сказано ранее, каждый вызов функции Symbol() возвращает уникальный экземпляр типа Symbol. Это свойство делает его очень подходящим для использования в любой базе данных, где требуются уникальные идентификаторы для каждого мембера базы данных. Использование экземпляров типа symbol облегчает программную генерацию этих идентификаторов.

Совместное использование символов

Если у вас есть опыт работы с РСУБД, вы должны знать о концепции внешних ключей и первичных ключей. Внешние ключи — это первичные ключи членов других таблиц. Но как нам разделить идентификаторы в javascript с помощью символов.

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

let id1 = Symbol.for("member1");
let id2 = Symbol.for("member1");
console.log(id1 === id2);
Вход в полноэкранный режим Выход из полноэкранного режима
true
Войти в полноэкранный режим Выход из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий