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

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


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

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

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

Выйти из полноэкранного режима

В приведенном выше примере мы явно преобразовали переменную «a» строки типа данных в числовой тип данных, используя Number().

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

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

Использование числового метода для этого даст использование 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. Нулевой
  6. BigInt
  7. Символ

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

Вещи, которые нужно помнить всегда.

  • Когда число преобразуется в логическое, все числа будут преобразованы в истину, кроме 0.
  • Когда логическое значение преобразуется в число, true будет преобразовано в 1, а false в 0.
  • Когда строка, значение которой на самом деле не является числом, т.е. если это не «1» или «10», а что-то вроде «bagfaceasadkhan», то при преобразовании ее в число будет выводиться как NaN, т.е. не число.
  • Когда строка преобразуется в логическое значение, все строки преобразуются в истинные, кроме «» (пустой строки).
  • Undefined при преобразовании в число даст NaN, при преобразовании в строку даст «undefined», при преобразовании в логическое значение даст false.

Совет по преобразованию в логическое значение.

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

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

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
Войти в полноэкранный режим

Выйти из полноэкранного режима


Принуждение типа 💻

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

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

Выйти из полноэкранного режима

В приведенном выше примере переменная с типом данных number и переменная b с типом данных 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");
Войти в полноэкранный режим

Выйти из полноэкранного режима