Преобразование типов и принуждение в Javascript💫.

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

  1. Преобразование типа (явное-ручное).👦🏼
  2. Приведение типов (Неявное-автоматическое).💻

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

Преобразование типов — это метод явного преобразования переменной одного типа данных в другой тип данных.

let a = "1";
console.log(typeof a)//string
a = Number(a);
console.log(typeof b);//number
Вход в полноэкранный режим Выход из полноэкранного режима

В приведенном выше примере мы явно преобразовали переменную «a» типа string в тип number с помощью Number().

Поскольку значение переменной «a» в первой строке было законным числом, т.е. 1, оно было преобразовано.

Но это не сработает, если «a» будет иметь значение, скажем, «bagfaceasadkhan».

Использование метода Number в этом случае даст результат NaN, т.е. не число.

let a = "bagfaceasadkhan";
console.log(typeof a)//string
a = Number(a);//NaN
console.log(typeof b);//udefined
Вход в полноэкранный режим Выход из полноэкранного режима

Аналогичным образом мы можем преобразовывать различные типы данных в другие типы данных.

В Javascript существует 7 основных типов данных.

  1. Число
  2. Строка
  3. Булево
  4. Неопределенный
  5. Null
  6. BigInt
  7. Символ

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

О чем нужно всегда помнить.

  • При преобразовании числа в булево значение все числа, кроме 0, будут преобразованы в true.
  • При преобразовании булевой функции в число true будет преобразовано в 1, а false — в 0.
  • Если строка, значение которой не является числом, т.е. если это не «1» или «10», а что-то вроде «bagfaceasadkhan», то при преобразовании в число она выдаст результат NaN, т.е. Not a Number.
  • При преобразовании строки в булево значение все строки преобразуются в истину, за исключением «» (пустой строки).
  • Неопределенное при преобразовании в число выдает NaN, при преобразовании в строку — «undefined», при преобразовании в булево — false.

Совет по преобразованию в булевы значения.

  • Все ложные значения, т.е. «», undefined, null и 0 при преобразовании в boolean дадут false, остальные значения дадут true.

Некоторые примеры кода, основанные на простых преобразованиях.

let a = true;//Boolean
let numA = Number(a)//1
let stringA = String(a)//"true"
let b = false;//Boolean
let numB = Number(b)//0
let stringB = String(b)//"false"
let c = 1;//Number
let cString = String(c)//"1"
let boolC = Boolean(c)//"true"
let d = 0;//Number
let dString = String(d)//"0"
let boolD = Boolean(d)//false
let e = undefined;//undefined
let eString = String(e)//"undefined"
let eNum = Number(e)//NaN
let eBool = Boolean(e)//false
Вход в полноэкранный режим Выход из полноэкранного режима

Принуждение типов 💻

Type Coercion — это механизм, при котором переменная одного типа данных автоматически преобразуется в другой тип данных.

let a = 1;
let b = "2";
console.log(a+b)//"12"//One automatically got converted to a string.
Вход в полноэкранный режим Выход из полноэкранного режима

В приведенном выше примере переменная с типом данных number и переменная b с типом данных string были вовлечены в операцию сложения, где переменная была принудительно, то есть автоматически преобразована в тип данных string, и затем, подобно объединению строк «1»+»2″, мы получили результат «12».

console.log(1+true+3-1);//4
Вход в полноэкранный режим Выйти из полноэкранного режима

В приведенном выше примере кода булево значение true было принудительно приведено к типу данных числа, поэтому операция стала 1+1+3-1 = 4.

О чем следует помнить при работе с принуждением типов.

  • (+) Если один из операндов оператора + является строкой, а другой операнд любого другого типа данных, он попытается преобразовать другой операнд в строку, а затем объединит оба операнда.

Рассмотрим пример программы.

console.log(1+3+"3"+4+"5")//"3345"
Вход в полноэкранный режим Выйти из полноэкранного режима

В приведенном выше примере выполнение будет происходить следующим образом.

Все арифметические операторы выполняются слева направо.

  1. 1 + 2 = 3 // оба операнда — числа
  2. 3 + «3» = «33»// поскольку один операнд является строкой, а другой числом, число преобразуется в строку, а затем операнды объединяются, в результате чего получается «33».
  3. «33» + 4 = «334»// здесь снова один операнд — число, а другой — строка.
  4. «334» + «5» = «3345»// здесь, поскольку оба операнда являются строками, это будет простая конкатенация строк, дающая на выходе «3345».
  • (-) Если один из операндов оператора — является строкой, а другой — любым типом данных, то он преобразует строковый операнд в число.

Рассмотрим пример программы.

console.log(10-2-"3"-2)//3
Вход в полноэкранный режим Выход из полноэкранного режима
  1. 10 — 2 = 8 // оба операнда — числа, поэтому простое вычитание.
  2. 8 — «3» = 5// один операнд — строка, которая преобразуется в число, а затем простое вычитание.
  3. 5 — 2 = 3// простое вычитание.

Резюме

  • Если один из двух операндов является строкой, то нестроковый операнд будет приведен к строке, если оператор равен +.
  • Если один из двух операндов или оба являются строкой, то строковый операнд будет приведен к числу, если оператором является любой арифметический операнд, кроме +.

Некоторые вопросы для пробы.

console.log(3+4+"5"+6+7);
Войти в полноэкранный режим Выйти из полноэкранного режима
console.log(3*4*"5");
Войти в полноэкранный режим Выход из полноэкранного режима
console.log("3"+"5"-2+"3")
Войти в полноэкранный режим Выход из полноэкранного режима
console.log(true+1+"33");
Войти в полноэкранный режим Выход из полноэкранного режима

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