Вступление
В 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]. »