JavaScript для тупых
  • JavaScript для тупых
  • Главная
  • Об учебнике
  • Формат обучения
  • Ввод в JavaScript. Что это? И для чего нужен?
  • Братки JavaScript-а
  • Переменные в JavaScript
  • Переменные. const, let, var
  • Преобразование типов
  • Операторы сравнения
  • Типы данных. Number
  • Типы данных. String
  • Типы данных. Boolean
  • Типы данных. null и undefined
  • Типы данных. Оператор typeof
  • Условные операторы: if и ?
  • Циклы: while, for
  • Операторы
  • Логические операторы
  • Знакомство с switch
  • Функции
  • Функции. Возврат значения
  • Стрелочные функции
  • Знакомство с DOM
  • DOM-элементы. Получение объектов
  • DOM-элементы. События. Ввод.
  • DOM-элементы. События. Часть 2
  • Объекты. Начало игры
  • Массивы
  • Методы массивов: splice, slice, concat
  • Методы массивов: find, findIndex, filter
  • Методы массивов: map, sort
  • Методы массивов: reverse, split, join
  • Методы массивов: indexOf, lastIndexOf, includes
  • Методы массивов: reduce, spread
  • Методы массивов: Array.isArray, some, every
  • Методы массивов: flat, fill
  • Планирование вызова функции: setTimeout
  • Планирование вызова функции: setInterval
  • Объекты. Свойства.
  • Объекты. Методы
  • this, call, apply, bind
  • Замыкания
  • Прототипы
  • Promises (Обещания)
Powered by GitBook
On this page

Was this helpful?

Преобразование типов

JavaScript простым языком

PreviousПеременные. const, let, varNextОператоры сравнения

Last updated 4 years ago

Was this helpful?

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

Преобразование к String (строковый тип)

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

let ageNumber = 19;
let ageString = ???;

Как же мы будем это делать? Приведу в пример несколько способов:

let ageNumber = 19;
let ageString = ageNumber + ''; // Вариант 1: так делал мой 
// прадед
let ageString = `${ageNumber}`; // Вариант 2: так уже чуть 
// лучше, чем делал мой дед
let ageString = String(ageNumber); // Вариант 3: вот так гораздо
// лучше, если будешь делать так

Как видишь, ничего сложного. Сделав одним из способов, ты почти на 100% будешь уверен, что все точно преобразовалось в строку. Почему почти? Потому как такое отлично сработает, если ты работаешь с примитивными типами данных: Number, String (да, сам String можно привести в String), Boolean, null и даже undefined. Но, такое преобразование не прокатит с объектами. Но об объектах мы всецело будем говорить чуть позже, так как еще к ним недостаточно подготовились.

Важно отметить, что при сложении переменных, если хотя бы одна из них имеет строковый тип, может произойти неприятная неожиданность:

let a = '1';
let b = 2;
let c = a + b; // получим значение: '12'

Оператор +, в данном случае может сыграть злую шутку. Он просто-напросто склеит значения переменных в одну строку. И, кстати, неважно в каком порядке мы будем складывать a + b или b + a.

Преобразование к Number (числовой тип)

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

Ради примера, представим обратную ситуацию:

let ageString = '19';

Теперь наша начальная переменная имеет тип String.

Приступим к преобразованию:

let ageString = '19';
let ageNumber = Number(ageString); //(1)
let ageNumber = + ageString; // (2)
let ageNumber = ageString / 1; // (3)
let ageNumber = ageString * 1; // (4);

Итак, в пример я привел 4 варианта. Рассмотрим каждый из них:

  1. Первый вариант называется явным преобразованием типа. Функция Number попробует преобразовать переданный в нее аргумент в строку. При этом, если вокруг цифр будут стоять пробелы, то они обрежутся и это не будет ошибкой. А вот если в строке будут содержаться какие-либо символы, кроме цифр, то в переменную запишется значение NaN (Not-A-Number). Если же строка была пустая, то в переменную запишется значение – 0.

  2. Второй вариант очень часто встречается в коде разработчиков. Это является неким лайфхаком. В данном случае, оператор + полностью заменяет вызов функции Number, т.к. их поведение полностью совпадает.

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

Есть некоторые особенности, которые важно запомнить при вызове функции Number:

Number(undefined); // получим значение: NaN
Number(null); // получим значение: 0
Number(true); // получим значение: 1
Number(false); // получим значение: 0

Преобразование к Boolean (логический тип)

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

Boolean(1); // получим значение: true
Boolean('строка'); // получим значение: true
Boolean(0); // получим значение: false
Boolean(null); // получим значение: false
Boolean(undefined); // получим значение: false
Boolean(NaN); // получим значение:false
Boolean(''); // получим значение: false

Если коротко, то все, что имеет какое-то значение, после преобразования будет иметь значение true, а все остальное – false.

Generic badge