бесплатно без регистрации урок 3 из 18

Типы значений

Различать число, строку и остальные типы, собирать текст шаблонными строками и понимать, почему «1» + 1 даёт «11».

6 мин чтения · 3 главы ·4 задания ·домашняя работа

Число и строка

Значения бывают разными по природе, и язык их различает. Пять типов покрывают почти всё, что встречается в работе.

число100 0.5 -7строка"Аня" "100"булевоtrue falseundefinedне заданоnullпусто нарочноtypeof показывает тип значения, которое лежит прямо сейчас«100» и 100 выглядят похоже, а ведут себя по-разному
Тип принадлежит значению, а не имени: в одну переменную можно положить что угодно.

Число. Целое и дробное — один тип, отдельного «целого» в JavaScript нет.

let цена = 1200;
let доля = 0.25;
let температура = -7;

Дробная часть отделяется точкой, а не запятой: запятая в языке разделяет значения. 1,5 будет понято как два числа подряд, и почти всегда это ошибка.

Строка. Любой текст в кавычках. Кавычки бывают трёх видов, и первые два равноправны:

let имя = "Аня";
let город = 'Москва';
let привет = `Привет, Аня`;

Двойные и одинарные различаются только вкусом автора: берут те, которых нет внутри текста. Третьи — «обратные» — умеют кое-что ещё, и о них следующая глава.

let имя = "Аня";
let лет = 30;
console.log(имя, лет);
console.log(typeof имя, typeof лет);

Аня 30 string number

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

Остальные три типа проще. Булево — это true или false, «да» или «нет»; из него состоят все условия, и следующие уроки будут про него. undefined означает «значения не задавали»: так выглядит переменная, объявленная без присваивания. null означает «пусто нарочно» — его кладёт человек, а не язык.

Разница между последними двумя тонкая, но полезная: undefined обычно говорит «сюда не добрались», а null — «сюда добрались и решили, что здесь ничего нет».

Шаблонные строки

Собирать текст из кусков через запятую в console.log удобно, а вот класть такой текст в переменную — уже нет:

let имя = "Аня";
let лет = 30;
let строка = "Меня зовут " + имя + ", мне " + лет + " лет";

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

Для этого есть обратные кавычки и подстановка:

let строка = `Меня зовут ${имя}, мне ${лет} лет`;

Внутри ${…} может стоять любое выражение — оно посчитается и вставится:

let цена = 1200;
console.log(`Цена: ${цена} ₽, со скидкой ${цена * 0.8} ₽`);

Цена: 1200 ₽, со скидкой 960 ₽

Второе умение обратных кавычек: строка может занимать несколько строк.

console.log(`Первая
Вторая`);

Первая Вторая

В обычных кавычках так нельзя — там перевод строки пишется знаком \n.

Приведение типов

Теперь главная странность языка, из-за которой он попадает в подборки «вот почему JavaScript смешной».

console.log(1 + 1);
console.log("1" + 1);
console.log("5" - 2);

2 11 3

1 + 12"1" + 1"11""5" - 23плюс — единственныйтакой оператор
Если хотя бы одна сторона — строка, плюс склеивает. Иначе складывает.

Правило на самом деле простое, и его стоит выучить дословно:

Плюс: если хотя бы одна сторона — строка, плюс склеивает. Иначе складывает.
Все остальные операторы — минус, умножение, деление — сначала приводят к числу.

Отсюда и «11», и «3». Плюс единственный, у кого два значения, — он и путает.

Строку превращают в число явно:

let введено = "10";
console.log(Number(введено) + 5);
console.log(введено + 5);

15 105

Number(…) — «преврати в число». Если превратить нельзя, получится NaN — «не число»:

console.log(Number("абв"));
console.log(Number(""));

NaN 0

Обратите внимание на пустую строку: она превращается в ноль, а не в NaN. Это одна из тех мелочей, которые ловят на собеседованиях и в реальных ошибках одинаково часто.

Задания урока

Каждое проверяется сразу: ответ сверяется с эталоном, и на неверный вариант приходит разбор.

  1. Заведите «имя» со значением «Аня» и «лет» со значением 30. Напечатайте типы обоих значений — должно выйти «string number».легко
  2. Заведите «имя» со значением «Аня» и «лет» со значением 30, а потом соберите обратными кавычками строку «Меня зовут Аня, мне 30 лет» в переменную «строка» и напечатайте её.средне
  3. В переменной «введено» лежит строка «10». Напечатайте сумму этого значения и числа 5 — должно выйти 15, а не 105.средне
  4. В «цена» лежит строка «1200». Посчитайте цену со скидкой 20 процентов и напечатайте обратными кавычками строку вида «Со скидкой: 960 ₽».сложно
Пройти урок с проверкой заданий Курс «JavaScript» открыт и бесплатен, прогресс сохраняется.
Открыть курс