JavaScript: Явное преобразование типов
В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Это особенно актуально при обработке ввода пользователя или данных из веб-форм: там всё приходит в виде строк, даже если вы ввели число.
JavaScript умеет преобразовывать типы автоматически (неявное преобразование), но полагаться на это опасно. Поэтому, когда вы точно знаете, какой тип хотите получить, лучше преобразовать значение явно — для этого есть специальные функции.
Преобразование строки в число
Представим, что мы получили из формы строку '345', а нам нужно сложить это число с другим:
const number = Number('345');
console.log(number + 5); // => 350Функция Number() получает строку и превращает её в число. Такие функции называют функциями приведения типа (casting functions).
console.log(Number('0')); // => 0
console.log(Number('10')); // => 10
console.log(Number('3.14')); // => 3.14
console.log(Number('hello')); // => NaN (не удалось преобразовать)Кроме Number(), есть функции parseInt() и parseFloat() — они «вытягивают» из строки целое или дробное число и умеют игнорировать лишние символы в конце:
console.log(parseInt('10px')); // => 10
console.log(parseFloat('3.5kg')); // => 3.5Преобразование в строку с помощью String()
Если нужно превратить число или логическое значение в строку, используйте функцию String():
console.log(String(10)); // => '10'
console.log(String(true)); // => 'true'
console.log(String(3.5)); // => '3.5'Это полезно при формировании текстов и сообщений:
const age = 42;
console.log('Age: ' + String(age)); // => Age: 42
// Хотя здесь удобнее интерполяция: `Age: ${age}`Преобразования можно выполнять одно за другим — значение проходит цепочку превращений:
'123' ──Number()──→ 123 ──String()──→ '123'Преобразование в логическое значение с помощью Boolean()
console.log(Boolean(0)); // => false
console.log(Boolean('')); // => false
console.log(Boolean('hello')); // => true
console.log(Boolean(1)); // => trueОтбрасывание дробной части с помощью Math.trunc()
Math.trunc() — встроенная функция; вызовы функций подробно разбираются в следующем модуле, пока достаточно использовать её по образцу из примера.
Иногда из дробного числа нужно получить целое, отбросив дробную часть. Для этого используют Math.trunc():
console.log(Math.trunc(36.6)); // => 36
console.log(Math.trunc(-36.6)); // => -36В отличие от Math.floor(), Math.trunc() просто отбрасывает дробную часть независимо от знака.
Задание
Дана константа temperature = 36.6. Напишите программу, которая:
- Отбрасывает дробную часть (
Math.trunc()). - Преобразует результат в строку (
String()). - Выводит строку с единицей измерения:
36 °C.
Полезное
JavaScript: Явное преобразование типов
В реальных программах часто возникает ситуация, когда данные одного типа нужно превратить в другой. Это особенно актуально при обработке ввода пользователя или данных из веб-форм: там всё приходит в виде строк, даже если вы ввели число.
JavaScript умеет преобразовывать типы автоматически (неявное преобразование), но полагаться на это опасно. Поэтому, когда вы точно знаете, какой тип хотите получить, лучше преобразовать значение явно — для этого есть специальные функции.
Преобразование строки в число
Представим, что мы получили из формы строку '345', а нам нужно сложить это число с другим:
const number = Number('345');
console.log(number + 5); // => 350Функция Number() получает строку и превращает её в число. Такие функции называют функциями приведения типа (casting functions).
console.log(Number('0')); // => 0
console.log(Number('10')); // => 10
console.log(Number('3.14')); // => 3.14
console.log(Number('hello')); // => NaN (не удалось преобразовать)Кроме Number(), есть функции parseInt() и parseFloat() — они «вытягивают» из строки целое или дробное число и умеют игнорировать лишние символы в конце:
console.log(parseInt('10px')); // => 10
console.log(parseFloat('3.5kg')); // => 3.5Преобразование в строку с помощью String()
Если нужно превратить число или логическое значение в строку, используйте функцию String():
console.log(String(10)); // => '10'
console.log(String(true)); // => 'true'
console.log(String(3.5)); // => '3.5'Это полезно при формировании текстов и сообщений:
const age = 42;
console.log('Age: ' + String(age)); // => Age: 42
// Хотя здесь удобнее интерполяция: `Age: ${age}`Преобразования можно выполнять одно за другим — значение проходит цепочку превращений:
'123' ──Number()──→ 123 ──String()──→ '123'Преобразование в логическое значение с помощью Boolean()
console.log(Boolean(0)); // => false
console.log(Boolean('')); // => false
console.log(Boolean('hello')); // => true
console.log(Boolean(1)); // => trueОтбрасывание дробной части с помощью Math.trunc()
Math.trunc() — встроенная функция; вызовы функций подробно разбираются в следующем модуле, пока достаточно использовать её по образцу из примера.
Иногда из дробного числа нужно получить целое, отбросив дробную часть. Для этого используют Math.trunc():
console.log(Math.trunc(36.6)); // => 36
console.log(Math.trunc(-36.6)); // => -36В отличие от Math.floor(), Math.trunc() просто отбрасывает дробную часть независимо от знака.
Задание
Дана константа temperature = 36.6. Напишите программу, которая:
- Отбрасывает дробную часть (
Math.trunc()). - Преобразует результат в строку (
String()). - Выводит строку с единицей измерения:
36 °C.
Полезное
Ваше упражнение проверяется по этим тестам
// @ts-check
import { expect, test, vi } from 'vitest';
test('data types casting', async () => {
const consoleLogSpy = vi.spyOn(console, 'log');
await import('./index.js');
const firstArg = consoleLogSpy.mock.calls.join('\n');
expect(firstArg).toBe('36 °C');
});Решение учителя откроется через:
20:00
