урок 4 из 18

Операторы

Научиться считать, сравнивать и соединять условия — и запомнить, чем один знак равенства отличается от трёх.

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

Арифметика

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

+   сложение
-   вычитание
*   умножение
/   деление
%   остаток от деления
**  возведение в степень
console.log(7 + 3, 7 - 3, 7 * 3);
console.log(7 / 2);
console.log(7 % 2);
console.log(2 ** 10);

10 4 21 3.5 1 1024

Два места заслуживают внимания.

Деление всегда даёт дробь. 7 / 2 — это 3.5, а не 3: целочисленного деления в JavaScript нет, и округлять нужно самому. Для тех, кто приходил из других языков, это регулярный источник удивления.

Остаток — самый полезный из неочевидных. % возвращает то, что осталось после деления нацело:

console.log(10 % 3);
console.log(10 % 2);
console.log(11 % 2);

1 0 1

Отсюда главный приём: число % 2 === 0 означает «чётное». Через остаток же проверяют кратность, раскрашивают строки таблицы через одну и раскладывают элементы по колонкам.

2 + 3 * 414сначала 3 × 4(2 + 3) * 420скобки первеесомневаетесь — ставьте скобки: они бесплатны и читаются лучше
Умножение и деление раньше сложения и вычитания. Скобки важнее всего.

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

Сравнение

Сравнение отвечает на вопрос «да или нет» и возвращает булево значение — true или false.

>    больше
<    меньше
>=   больше или равно
<=   меньше или равно
===  равно
!==  не равно
console.log(10 > 5);
console.log(10 < 5);
console.log(10 >= 10);
console.log(10 === 10);

true false true true

10 > 5true10 === "10"falseразные типытри знака равенства сравнивают и значение, и тип
Любое сравнение возвращает true или false — из них и собираются условия.

Теперь важное про равенство. Знаков равенства в языке три вида, и путать их дорого:

=     положить значение в переменную
===   сравнить значение и тип
==    сравнить, приводя типы — так не пишут

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

console.log(10 === "10");
console.log(10 == "10");

false true

Первое честно: число и строка — разные вещи. Второе «помогло» и тем самым спрятало ошибку. Правило одно: всегда пишите три знака. Два знака в чужом коде — почти всегда недосмотр, а не замысел.

Логика и сокращения

Условия редко бывают одиночными: «если товар есть и цена подходит», «если гость или новичок». Для этого три знака:

&&   и      оба условия верны
||   или    хотя бы одно верно
!    не     переворачивает ответ
const цена = 1200;
const вНаличии = true;
console.log(цена < 2000 && вНаличии);
console.log(цена > 5000 || вНаличии);
console.log(!вНаличии);

true true false

У этих операторов есть особенность, которая кажется мелочью, а используется постоянно: они не считают правую часть, если ответ уже ясен. Если левая часть && ложна — результат ложен, и правую смотреть незачем. Это называется коротким замыканием.

Теперь сокращения для арифметики. Строку счёт = счёт + 1 пишут короче:

счёт += 1;     то же, что счёт = счёт + 1
счёт -= 5;     вычесть и положить обратно
счёт *= 2;     умножить и положить обратно
счёт++;        прибавить единицу
счёт--;        вычесть единицу
let счёт = 10;
счёт += 5;
счёт++;
console.log(счёт);

16

++ и -- встречаются в основном в циклах — там, где нужно просто «на один больше». В остальных местах += 1 читается понятнее.

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

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

  1. Напечатайте три значения через запятую: результат деления 7 на 2, остаток от деления 10 на 3 и 2 в степени 10.легко
  2. В переменной «число» лежит 14. Напечатайте, чётное ли оно, — должно выйти true.средне
  3. Напечатайте два значения через запятую: сравнение 10 с «10» тремя знаками равенства и двумя. Должно выйти «false true».средне
  4. Цена 1200, товар в наличии. Заведите переменную «можноКупить»: она должна быть истинной, когда цена меньше 2000 и товар в наличии. Напечатайте её.сложно

Практика и материалы по теме курса

Пройти урок с проверкой заданий Курс «JavaScript» открыт и бесплатен, прогресс сохраняется.
Открыть курс