Как конвертировать типы данных в JavaScript

Вступление

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

Хотя из-заtype coercion, JavaScript автоматически преобразует множество значений, часто рекомендуется вручную преобразовывать значения между типами для достижения ожидаемых результатов.

Это руководство поможет вам преобразовать примитивные типы данных JavaScript, включая числа, строки и логические значения.

Неявное преобразование

Как язык программирования, JavaScript очень терпим к неожиданным значениям. Из-за этого JavaScript будет пытаться преобразовать неожиданные значения, а не отвергать их напрямую. Это неявное преобразование известно как приведение типов.

Некоторые методы автоматически преобразуют значения, чтобы использовать их. alert() method принимает строку в качестве параметра, но автоматически преобразует другие типы в строки. Итак, мы можем передать числовое значение методу:

alert(8.5);

Если мы запустим строку выше, браузер вернет всплывающее диалоговое окно с предупреждением, в котором отображается значение8.5, за исключением того, что оно было преобразовано в строку для этого.

При использовании строк, которые могут быть преобразованы в числа с помощьюmathematical operators, вы обнаружите, что JavaScript может обрабатывать значения путем неявного преобразования строк в числа, как показано в примерах ниже.

// Subtraction
"15" - "10";
Output5
// Modulo
"15" % "10";
Output5

Однако не каждый оператор будет работать так, как ожидалось. Оператор+ особенно проблематичен, поскольку он может означать либо сложение, либоstring concatenation.

// When working with strings, + stands for concatenation
"2" + "3";
Output"23"

Поскольку оператор+ является многоцелевым, строковые значения2 и3, несмотря на то, что они являются числовыми строками, объединяются со строковым значением23, а не складываются вместе. быть числом5.

Поскольку неоднозначность может существовать и иногда приводить к неожиданным результатам, часто лучше явно преобразовывать типы данных в вашем коде в максимально возможной степени. Это поможет в управлении вводом от пользователей и обработке ошибок.

Преобразование значений в строки

Значения можно явно преобразовать в строки, вызвавString() илиn.toString().

Используя функциюString(), давайте преобразуемBoolean value в строку, передав значениеtrue в параметры дляString().

String(true);

Когда мы это сделаем, будет возвращен строковый литерал"true".

Output"true"

В качестве альтернативы мы можем передать число в функцию.

String(49);

Будет возвращен строковый литерал этого числа.

Output"49"

Давайте воспользуемся функциейString() с переменной. Мы присвоим числовое значение переменнойodyssey, а затем воспользуемся операторомtypeof для проверки типа.

let odyssey = 2001;
console.log(typeof odyssey);
Outputnumber

На этом этапе переменнойodyssey присвоено числовое значение2001, которое, как мы подтвердили, является числом.

Теперь давайте переназначимodyssey его строковому эквиваленту, а затем используемtypeof, чтобы подтвердить, что мы успешно преобразовали значение переменной из числа в строку.

odyssey = String(odyssey);  // "2001"
console.log(typeof odyssey);
Outputstring

В приведенном выше примере мы подтвердили, чтоodyssey был переназначен как эквивалент строкового значения после преобразования типа данных.

Мы можем использоватьn.toString() аналогичным образом. Мы можем заменитьn переменной:

let blows = 400;
blows.toString();

Переменнаяblows будет возвращена в виде строки.

Output"400"

В качестве альтернативы мы можем поместить значение в круглые скобки, а не переменную сn.toString():

(1776).toString();          // returns "1776"
(false).toString();         // returns "false"
(100 + 200).toString();     // returns "300"

ИспользуяString() илиn.toString(), мы можем явно преобразовать значения Boolean илиnumber data types в строковые значения, чтобы гарантировать, что наш код ведет себя так, как мы ожидаем.

Преобразование значений в числа

При преобразовании значений в числовой тип данных мы будем использовать метод Number (). Прежде всего, мы будем преобразовывать строки числового текста в числа, но мы также можем преобразовывать логические значения.

Мы можем передать строку числа в методNumber():

Number("1984");

Строка будет преобразована в число и больше не будет заключена в кавычки.

Output1984

Мы также можем присвоить строку переменной и затем преобразовать ее.

let dalmatians = "101";
Number(dalmatians);
Output101

Строковый литерал"101" был преобразован в число101 через его переменную.

Строки пробелов или пустых строк будут преобразованы в0.

Number(" ");    // returns 0
Number("");     // returns 0

Имейте в виду, что строки, не являющиеся числами, будут преобразованы вNaN, что означаетNotaNumber. Это включает числа, разделенные пробелами.

Number("twelve");   // returns NaN
Number("20,000");   // returns NaN
Number("2 3");      // returns NaN
Number("11-11-11"); // returns NaN

Для логических типов данныхfalse будет оценивать как0, аtrue будет оценивать как1.

Number(false);      // returns 0
Number(true);       // returns 1

МетодNumber() преобразует нечисловые типы данных в числа.

Преобразование значений в логические значения

Для преобразования чисел или строк в логические значения используется методBoolean(). Это может быть полезно, например, для определения, вводил ли пользователь данные в текстовое поле или нет.

Любое значение, которое интерпретируется как пустое, например число0, пустая строка или значения, которые не определены, илиNaN илиnull, преобразуются вfalse.

Boolean(0);         // returns false
Boolean("");        // returns false
Boolean(undefined); // returns false
Boolean(NaN);       // returns false
Boolean(null);      // returns false

Другие значения будут преобразованы вtrue, включая строковые литералы, состоящие из пробелов.

Boolean(2000);      // returns true
Boolean(" ");       // returns true
Boolean("Maniacs"); // returns true

Обратите внимание, что"0" как строковый литерал преобразуется вtrue, поскольку это непустое строковое значение:

Boolean("0");   // returns true

Преобразование чисел и строк в логические значения позволяет нам оценивать данные в двоичных терминах и может использоваться для управления потоком в наших программах.

Заключение

В этом руководстве рассказывается, как JavaScript обрабатывает преобразование своих примитивных типов данных. Хотя из-за принуждения типов во многих случаях типы данных неявно преобразуются, хорошей привычкой является явное преобразование типов данных, чтобы гарантировать, что программы функционируют должным образом.

Чтобы узнать больше о типах данных JavaScript, прочитайте «https://www.digitalocean.com/community/tutorials/understanding-data-types-in-javascript[Understanding Типы данных в JavaScript]». Чтобы увидеть, как выполняется преобразование типов данных на других языках программирования посмотрите «https://www.digitalocean.com/community/tutorials/how-to-convert-data-types-in-python-3[How для преобразования типов данных в Python 3]. »