HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#статьи</a></p>
1 <p><a>#статьи</a></p>
2 <ul><li>17 июл 2025</li>
2 <ul><li>17 июл 2025</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><p>Что делает =, чем === отличается от == и зачем нужен typeof, - всё про операторы JS.</p>
4 </ul><p>Что делает =, чем === отличается от == и зачем нужен typeof, - всё про операторы JS.</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
5 <p>Иллюстрация: Оля Ежак для Skillbox Media</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
6 <p>Онлайн-журнал для тех, кто влюблён в код и информационные технологии. Пишем для айтишников и об айтишниках.</p>
7 <p>Операторы - это то, с чего начинается настоящая работа с данными в JavaScript. С их помощью мы складываем числа, сравниваем значения, принимаем решения и управляем тем, как выполняется код. В этом материале разберём базовые JS-операторы: что такое унарный и бинарный оператор, как работает оператор остатка от деления, возведение в степень и другие действия. Покажем, как использовать их на практике, - понятно и с примерами.</p>
7 <p>Операторы - это то, с чего начинается настоящая работа с данными в JavaScript. С их помощью мы складываем числа, сравниваем значения, принимаем решения и управляем тем, как выполняется код. В этом материале разберём базовые JS-операторы: что такое унарный и бинарный оператор, как работает оператор остатка от деления, возведение в степень и другие действия. Покажем, как использовать их на практике, - понятно и с примерами.</p>
8 <p><strong>Содержание</strong></p>
8 <p><strong>Содержание</strong></p>
9 <ul><li><a>Что такое оператор в JavaScript</a></li>
9 <ul><li><a>Что такое оператор в JavaScript</a></li>
10 <li><a>Работа с данными: как изменять и вычислять значения</a></li>
10 <li><a>Работа с данными: как изменять и вычислять значения</a></li>
11 <li><a>Сравнение и выбор: операторы для принятия решений в коде</a></li>
11 <li><a>Сравнение и выбор: операторы для принятия решений в коде</a></li>
12 <li><a>Логические операции: связываем условия между собой</a></li>
12 <li><a>Логические операции: связываем условия между собой</a></li>
13 <li><a>Оператор запятая: выполняем сразу несколько выражений</a></li>
13 <li><a>Оператор запятая: выполняем сразу несколько выражений</a></li>
14 <li><a>Приоритеты операторов в JavaScript</a></li>
14 <li><a>Приоритеты операторов в JavaScript</a></li>
15 <li><a>Ошибки при работе с операторами в JavaScript</a></li>
15 <li><a>Ошибки при работе с операторами в JavaScript</a></li>
16 <li><a>Частые вопросы на собеседованиях</a></li>
16 <li><a>Частые вопросы на собеседованиях</a></li>
17 </ul><p>Операторы - это действия, которые JavaScript выполняет с данными. С их помощью можно сложить числа, сравнить значения, присвоить переменной новое значение, проверить условие - и многое другое. Без операторов код был бы просто текстом: ничего бы не делал.</p>
17 </ul><p>Операторы - это действия, которые JavaScript выполняет с данными. С их помощью можно сложить числа, сравнить значения, присвоить переменной новое значение, проверить условие - и многое другое. Без операторов код был бы просто текстом: ничего бы не делал.</p>
18 <p>Проще всего представить переменные как коробки, в которых хранятся данные, а операторы - как инструменты для работы с этими коробками. Например, можно открыть коробку, переложить содержимое, сравнить его с другим или проверить, подходит ли оно для нужной задачи.</p>
18 <p>Проще всего представить переменные как коробки, в которых хранятся данные, а операторы - как инструменты для работы с этими коробками. Например, можно открыть коробку, переложить содержимое, сравнить его с другим или проверить, подходит ли оно для нужной задачи.</p>
19 let x = 5 + 3;<p>Здесь два оператора:</p>
19 let x = 5 + 3;<p>Здесь два оператора:</p>
20 <ul><li>= - оператор присваивания: кладёт результат в переменную x;</li>
20 <ul><li>= - оператор присваивания: кладёт результат в переменную x;</li>
21 <li>+ - арифметический оператор: складывает 5 и 3.</li>
21 <li>+ - арифметический оператор: складывает 5 и 3.</li>
22 </ul><p>В итоге x получит значение 8.</p>
22 </ul><p>В итоге x получит значение 8.</p>
23 <p>Операторы работают с операндами - это значения, над которыми совершается действие. Операндом может быть:</p>
23 <p>Операторы работают с операндами - это значения, над которыми совершается действие. Операндом может быть:</p>
24 <ul><li>число - 1, 2, 42;</li>
24 <ul><li>число - 1, 2, 42;</li>
25 <li>строка - "hello";</li>
25 <li>строка - "hello";</li>
26 <li>логическое значение - true или false;</li>
26 <li>логическое значение - true или false;</li>
27 <li>переменная - x, userName, isActive;</li>
27 <li>переменная - x, userName, isActive;</li>
28 <li>выражение - например, 2 + 2 или Math.random().</li>
28 <li>выражение - например, 2 + 2 или Math.random().</li>
29 </ul><p>Если у оператора два операнда (например, 5 + 3), это бинарный оператор. Если один - унарный (+a, !isAdmin).</p>
29 </ul><p>Если у оператора два операнда (например, 5 + 3), это бинарный оператор. Если один - унарный (+a, !isAdmin).</p>
30 <p>Когда вы работаете с переменными, чаще всего вам нужно выполнять с ними какие-то действия: складывать, делить, обновлять, преобразовывать. В JavaScript для этого есть специальные операторы - они позволяют работать с числами, строками и другими значениями.</p>
30 <p>Когда вы работаете с переменными, чаще всего вам нужно выполнять с ними какие-то действия: складывать, делить, обновлять, преобразовывать. В JavaScript для этого есть специальные операторы - они позволяют работать с числами, строками и другими значениями.</p>
31 <p>Разберём основные из них: арифметические, унарные, операторы присваивания, инкремент и декремент.</p>
31 <p>Разберём основные из них: арифметические, унарные, операторы присваивания, инкремент и декремент.</p>
32 <p>Арифметические операторы нужны для того, чтобы выполнять обычные математические действия: сложение, вычитание, деление, умножение и другие. Они работают с двумя значениями, например 5 + 7, это называется бинарной операцией.</p>
32 <p>Арифметические операторы нужны для того, чтобы выполнять обычные математические действия: сложение, вычитание, деление, умножение и другие. Они работают с двумя значениями, например 5 + 7, это называется бинарной операцией.</p>
33 <p>Математические операторы:</p>
33 <p>Математические операторы:</p>
34 <ul><li>+ - сложение;</li>
34 <ul><li>+ - сложение;</li>
35 <li>- - вычитание;</li>
35 <li>- - вычитание;</li>
36 <li>* - умножение;</li>
36 <li>* - умножение;</li>
37 <li>/ - деление;</li>
37 <li>/ - деление;</li>
38 <li>% - остаток от деления;</li>
38 <li>% - остаток от деления;</li>
39 <li>** - возведение в степень.</li>
39 <li>** - возведение в степень.</li>
40 </ul>let a = 5; let b = 7; console.log(a + b); // 12 - сложение console.log(a - b); // -2 - вычитание console.log(a * b); // 35 - умножение console.log(a / b); // 0.714... - деление console.log(a % b); // 5 - остаток от деления console.log(a ** b); // 78125 - возведение в степень<p>Чтобы сохранить значение в переменную, нужен оператор присваивания - =. Он работает просто: берёт значение справа и кладёт его в переменную слева.</p>
40 </ul>let a = 5; let b = 7; console.log(a + b); // 12 - сложение console.log(a - b); // -2 - вычитание console.log(a * b); // 35 - умножение console.log(a / b); // 0.714... - деление console.log(a % b); // 5 - остаток от деления console.log(a ** b); // 78125 - возведение в степень<p>Чтобы сохранить значение в переменную, нужен оператор присваивания - =. Он работает просто: берёт значение справа и кладёт его в переменную слева.</p>
41 let a = 10; console.log(a);<p>В переменную a положили число 10, и теперь мы можем использовать его в любом месте кода. Если нужно обновить значение, снова используем =:</p>
41 let a = 10; console.log(a);<p>В переменную a положили число 10, и теперь мы можем использовать его в любом месте кода. Если нужно обновить значение, снова используем =:</p>
42 a = 50;a = 50; console.log(a);<p>В итоге переменная a теперь хранит значение 50.</p>
42 a = 50;a = 50; console.log(a);<p>В итоге переменная a теперь хранит значение 50.</p>
43 <p>Это и есть основная задача оператора присваивания - сохранить или заменить значение переменной.</p>
43 <p>Это и есть основная задача оператора присваивания - сохранить или заменить значение переменной.</p>
44 <p>Составные операторы - гибрид арифметических операторов и оператора присваивания. Они просто сокращают запись. Вместо x = x + 5 мы пишем x += 5, получается немного короче.</p>
44 <p>Составные операторы - гибрид арифметических операторов и оператора присваивания. Они просто сокращают запись. Вместо x = x + 5 мы пишем x += 5, получается немного короче.</p>
45 <p>Вообще, составных операторов много, вот самые основные:</p>
45 <p>Вообще, составных операторов много, вот самые основные:</p>
46 <strong>Оператор присваивания</strong><strong>Что делает</strong><strong>Как пишется</strong><strong>Какую конструкцию сокращает</strong>+=Прибавляетx += 5x = x + 5-=Вычитаетx -= 5x = x - 5*=Умножаетx *= 5x = x * 5/=Делитx /= 5x = x / 5%=Возвращает остаток от деленияx %= 5x = x % 5**=Возводит в степеньx **= 5x = x ** 5<p>Инкремент и декремент - это унарные операторы, которые изменяют значение переменной на единицу.</p>
46 <strong>Оператор присваивания</strong><strong>Что делает</strong><strong>Как пишется</strong><strong>Какую конструкцию сокращает</strong>+=Прибавляетx += 5x = x + 5-=Вычитаетx -= 5x = x - 5*=Умножаетx *= 5x = x * 5/=Делитx /= 5x = x / 5%=Возвращает остаток от деленияx %= 5x = x % 5**=Возводит в степеньx **= 5x = x ** 5<p>Инкремент и декремент - это унарные операторы, которые изменяют значение переменной на единицу.</p>
47 <ul><li>++ - инкремент: увеличивает значение на 1.</li>
47 <ul><li>++ - инкремент: увеличивает значение на 1.</li>
48 <li>-- - декремент: уменьшает значение на 1.</li>
48 <li>-- - декремент: уменьшает значение на 1.</li>
49 </ul><p>Такие операторы часто используются в циклах, счётчиках шагов, в таймерах и при других пошаговых изменениях.</p>
49 </ul><p>Такие операторы часто используются в циклах, счётчиках шагов, в таймерах и при других пошаговых изменениях.</p>
50 <p>Инкремент и декремент имеют две формы: префиксную и постфиксную. Разберём по порядку, как они работают.</p>
50 <p>Инкремент и декремент имеют две формы: префиксную и постфиксную. Разберём по порядку, как они работают.</p>
51 <p>Если оператор записан перед переменной, это префиксная форма. Она сначала изменяет значение, а потом возвращает его.</p>
51 <p>Если оператор записан перед переменной, это префиксная форма. Она сначала изменяет значение, а потом возвращает его.</p>
52 // Объявляем переменные a и b: let a = 0; let b = 2; // 1. Сначала увеличиваем значение a на 1 // 2. Потом кладём новое значение в переменную b b = ++a; // Смотрим, что получилось console.log(a); // Вывод в консоль: 1 console.log(b); // Вывод в консоль: 1<p>То же самое работает и для декремента - только значение уменьшается.</p>
52 // Объявляем переменные a и b: let a = 0; let b = 2; // 1. Сначала увеличиваем значение a на 1 // 2. Потом кладём новое значение в переменную b b = ++a; // Смотрим, что получилось console.log(a); // Вывод в консоль: 1 console.log(b); // Вывод в консоль: 1<p>То же самое работает и для декремента - только значение уменьшается.</p>
53 <p>Если оператор записан после переменной, это постфиксная форма. Она сначала возвращает текущее значение, а потом изменяет его.</p>
53 <p>Если оператор записан после переменной, это постфиксная форма. Она сначала возвращает текущее значение, а потом изменяет его.</p>
54 // Объявляем переменные a и b: let a = 2; let b = 0; // 1. Сначала кладём значение переменной a в переменную b // 2. Потом уменьшаем значениеьa на 1 b = a--; // Смотрим, что получилось console.log(a); // Вывод в консоль: 1 console.log(b); // Вывод в консоль: 2<p>Унарные операторы в JavaScript - это операторы, которые работают только с одним значением и пишутся перед операндом. Есть два базовых унарных оператора:</p>
54 // Объявляем переменные a и b: let a = 2; let b = 0; // 1. Сначала кладём значение переменной a в переменную b // 2. Потом уменьшаем значениеьa на 1 b = a--; // Смотрим, что получилось console.log(a); // Вывод в консоль: 1 console.log(b); // Вывод в консоль: 2<p>Унарные операторы в JavaScript - это операторы, которые работают только с одним значением и пишутся перед операндом. Есть два базовых унарных оператора:</p>
55 <ul><li>+ (унарный плюс) - преобразует значение в число. Применяется для упрощения кода и быстрого преобразования типов данных, например строки в число.</li>
55 <ul><li>+ (унарный плюс) - преобразует значение в число. Применяется для упрощения кода и быстрого преобразования типов данных, например строки в число.</li>
56 <li>- (унарный минус) - меняет знак числа (положительное число на отрицательное и, наоборот, - отрицательное на положительное). Применяется при математических расчётах.</li>
56 <li>- (унарный минус) - меняет знак числа (положительное число на отрицательное и, наоборот, - отрицательное на положительное). Применяется при математических расчётах.</li>
57 </ul><p>Смотрим, как работает унарный плюс:</p>
57 </ul><p>Смотрим, как работает унарный плюс:</p>
58 // Строка "5" становится числом 5 console.log(+"5"); // 5 // Булево значение true становится 1 console.log(+true); // 1 // Значение null становится 0 console.log(+null); // 0 // Infinity - уже число console.log(+Infinity); // Infinity // Строка, не являющаяся числом, становится NaN console.log(+"Hello"); // NaN<p>Обратите внимание: NaN - это специальное значение, которое означает "не число". Оно появляется, когда преобразование выполнить невозможно.</p>
58 // Строка "5" становится числом 5 console.log(+"5"); // 5 // Булево значение true становится 1 console.log(+true); // 1 // Значение null становится 0 console.log(+null); // 0 // Infinity - уже число console.log(+Infinity); // Infinity // Строка, не являющаяся числом, становится NaN console.log(+"Hello"); // NaN<p>Обратите внимание: NaN - это специальное значение, которое означает "не число". Оно появляется, когда преобразование выполнить невозможно.</p>
59 <p>Всё то же самое, но с унарным минусом:</p>
59 <p>Всё то же самое, но с унарным минусом:</p>
60 // Строка "5" сначала становится 5, затем меняется знак console.log(-"5"); // -5 // true → 1 → -1 console.log(-true); // -1 // null → 0 → -0 console.log(-null); // -0 // Infinity → -Infinity console.log(-Infinity); // -Infinity // Строка, не являющаяся числом → NaN console.log(-"Hello"); // NaN<p>На практике -0 ведёт себя почти так же, как 0, но технически это разные значения: это важно в редких случаях - например, при работе с математикой низкого уровня или при сравнении с бесконечностью (Infinity).</p>
60 // Строка "5" сначала становится 5, затем меняется знак console.log(-"5"); // -5 // true → 1 → -1 console.log(-true); // -1 // null → 0 → -0 console.log(-null); // -0 // Infinity → -Infinity console.log(-Infinity); // -Infinity // Строка, не являющаяся числом → NaN console.log(-"Hello"); // NaN<p>На практике -0 ведёт себя почти так же, как 0, но технически это разные значения: это важно в редких случаях - например, при работе с математикой низкого уровня или при сравнении с бесконечностью (Infinity).</p>
61 <p>Очень часто программам нужно самостоятельно принять решение, выполнить один блок кода или другой, в зависимости от условий. Для этого в JavaScript есть операторы сравнения, логики и выбора. Они помогают понять, равны ли значения, какого они типа и какой путь выбрать дальше. В этом разделе разберём, как с их помощью управлять поведением программы.</p>
61 <p>Очень часто программам нужно самостоятельно принять решение, выполнить один блок кода или другой, в зависимости от условий. Для этого в JavaScript есть операторы сравнения, логики и выбора. Они помогают понять, равны ли значения, какого они типа и какой путь выбрать дальше. В этом разделе разберём, как с их помощью управлять поведением программы.</p>
62 <p>Операторы сравнения проверяют, как два значения соотносятся между собой: больше ли одно другого, меньше ли, или они равны. Ответ всегда один из двух: true (истина) или false (ложь).</p>
62 <p>Операторы сравнения проверяют, как два значения соотносятся между собой: больше ли одно другого, меньше ли, или они равны. Ответ всегда один из двух: true (истина) или false (ложь).</p>
63 <p>Вот список операторов сравнения:</p>
63 <p>Вот список операторов сравнения:</p>
64 <ul><li>== - сравнивает значения, приводит типы автоматически;</li>
64 <ul><li>== - сравнивает значения, приводит типы автоматически;</li>
65 <li>=== - сравнивает значения и типы без преобразования;</li>
65 <li>=== - сравнивает значения и типы без преобразования;</li>
66 <li>!= - сравнивает два значения и возвращает true, если они разные (с приведением типов);</li>
66 <li>!= - сравнивает два значения и возвращает true, если они разные (с приведением типов);</li>
67 <li>!== - сравнивает значения и их типы и возвращает true, если они разные (строго);</li>
67 <li>!== - сравнивает значения и их типы и возвращает true, если они разные (строго);</li>
68 <li>&gt; - больше чем;</li>
68 <li>&gt; - больше чем;</li>
69 <li>&gt;= - больше чем или равно;</li>
69 <li>&gt;= - больше чем или равно;</li>
70 <li>&lt; - меньше чем;</li>
70 <li>&lt; - меньше чем;</li>
71 <li>&lt;= - меньше чем или равно.</li>
71 <li>&lt;= - меньше чем или равно.</li>
72 </ul><p>В JavaScript можно сравнивать значения разных типов:</p>
72 </ul><p>В JavaScript можно сравнивать значения разных типов:</p>
73 <ul><li><strong>Числа</strong> - обычные, целые, десятичные, положительные и отрицательные.</li>
73 <ul><li><strong>Числа</strong> - обычные, целые, десятичные, положительные и отрицательные.</li>
74 <li><strong>Строки</strong> - JavaScript сравнивает их по буквам, как в словаре.</li>
74 <li><strong>Строки</strong> - JavaScript сравнивает их по буквам, как в словаре.</li>
75 </ul><ul><li><strong>Логические значения</strong>(true и false) - они преобразуются в числа: true = 1, false = 0.</li>
75 </ul><ul><li><strong>Логические значения</strong>(true и false) - они преобразуются в числа: true = 1, false = 0.</li>
76 </ul><ul><li><strong>Значения из форм</strong> - обычно приходят как строки, даже если выглядят как числа.</li>
76 </ul><ul><li><strong>Значения из форм</strong> - обычно приходят как строки, даже если выглядят как числа.</li>
77 <li><strong>null и undefined</strong> - ведут себя особо (о них чуть позже).</li>
77 <li><strong>null и undefined</strong> - ведут себя особо (о них чуть позже).</li>
78 </ul>console.log(10 &gt; 5); // true - сравниваются числа console.log("apple" &lt; "banana"); // true - сравниваются строки по алфавиту console.log(true &gt; false); // true - true → 1, false → 0 console.log(null &gt;= 0); // true - null → 0 console.log(undefined &lt; 10); // false - undefined → NaN, сравнение с NaN = false console.log("7" &gt; 3); // true - строка "7" → число 7<p>Можно даже сравнивать значения разных типов друг с другом - JavaScript не запрещает этого. Если типы данных разные, JavaScript пытается привести их к одному типу, обычно к числу. Это происходит автоматически, но результат может быть неожиданным.</p>
78 </ul>console.log(10 &gt; 5); // true - сравниваются числа console.log("apple" &lt; "banana"); // true - сравниваются строки по алфавиту console.log(true &gt; false); // true - true → 1, false → 0 console.log(null &gt;= 0); // true - null → 0 console.log(undefined &lt; 10); // false - undefined → NaN, сравнение с NaN = false console.log("7" &gt; 3); // true - строка "7" → число 7<p>Можно даже сравнивать значения разных типов друг с другом - JavaScript не запрещает этого. Если типы данных разные, JavaScript пытается привести их к одному типу, обычно к числу. Это происходит автоматически, но результат может быть неожиданным.</p>
79 <p>Вот как это работает:</p>
79 <p>Вот как это работает:</p>
80 <ul><li>строка "5" становится числом 5;</li>
80 <ul><li>строка "5" становится числом 5;</li>
81 <li>true превращается в 1, false - в 0;</li>
81 <li>true превращается в 1, false - в 0;</li>
82 <li>null - почти всегда превращается в 0;</li>
82 <li>null - почти всегда превращается в 0;</li>
83 <li>undefined - становится NaN, а любое сравнение с NaN всегда даёт false;</li>
83 <li>undefined - становится NaN, а любое сравнение с NaN всегда даёт false;</li>
84 <li>строки между собой сравниваются по символам - лексикографически.</li>
84 <li>строки между собой сравниваются по символам - лексикографически.</li>
85 </ul>console.log(10 &gt; 5); // true - числа console.log("7" &lt; 10); // true - строка "7" превращается в число console.log(true &gt;= 1); // true - true → 1 console.log(false &lt;= 0); // true - false → 0 console.log(null &lt; 1); // true - null → 0 console.log(undefined &gt; 0); // false - undefined → NaN console.log("apple" &lt; "banana"); // true - строки сравниваются по буквам<p>Приводите данные к одному типу вручную, если не хотите, чтобы программа сама решила, как их сравнивать.</p>
85 </ul>console.log(10 &gt; 5); // true - числа console.log("7" &lt; 10); // true - строка "7" превращается в число console.log(true &gt;= 1); // true - true → 1 console.log(false &lt;= 0); // true - false → 0 console.log(null &lt; 1); // true - null → 0 console.log(undefined &gt; 0); // false - undefined → NaN console.log("apple" &lt; "banana"); // true - строки сравниваются по буквам<p>Приводите данные к одному типу вручную, если не хотите, чтобы программа сама решила, как их сравнивать.</p>
86 <p>В JavaScript есть два похожих оператора сравнения:</p>
86 <p>В JavaScript есть два похожих оператора сравнения:</p>
87 <ul><li>== - сравнение по значению, с автоматическим приведением типов.</li>
87 <ul><li>== - сравнение по значению, с автоматическим приведением типов.</li>
88 <li>=== - сравнение и по значению, и по типу (его называют строгим сравнением).</li>
88 <li>=== - сравнение и по значению, и по типу (его называют строгим сравнением).</li>
89 </ul><p>Когда вы используете ==, JavaScript пытается привести разные типы к одному. Это может дать неожиданный результат - например, строка "0" и число 0 вдруг окажутся равны.</p>
89 </ul><p>Когда вы используете ==, JavaScript пытается привести разные типы к одному. Это может дать неожиданный результат - например, строка "0" и число 0 вдруг окажутся равны.</p>
90 <p>Оператор == сравнивает число и строку:</p>
90 <p>Оператор == сравнивает число и строку:</p>
91 console.log(0 == "0"); // true<p>Оператор привёл значения к одному типу и сравнил. Получилось, что 0 равен 0. С точки зрения JavaScript всё в порядке.</p>
91 console.log(0 == "0"); // true<p>Оператор привёл значения к одному типу и сравнил. Получилось, что 0 равен 0. С точки зрения JavaScript всё в порядке.</p>
92 <p>Тот же пример с ===:</p>
92 <p>Тот же пример с ===:</p>
93 console.log(0 === "0"); // false<p>А здесь число не равно строке.</p>
93 console.log(0 === "0"); // false<p>А здесь число не равно строке.</p>
94 <p>Если не хотите непредсказуемой самодеятельности JavaScript, используйте строгое сравнение ===, оно надёжнее.</p>
94 <p>Если не хотите непредсказуемой самодеятельности JavaScript, используйте строгое сравнение ===, оно надёжнее.</p>
95 <p>Иногда нужно понять, что за данные перед нами - число, строка, объект или что-то ещё. Для этого в JavaScript есть специальный оператор typeof.</p>
95 <p>Иногда нужно понять, что за данные перед нами - число, строка, объект или что-то ещё. Для этого в JavaScript есть специальный оператор typeof.</p>
96 <p>Он проверяет значение и возвращает, что это за тип: number, string, boolean, object, function и так далее.</p>
96 <p>Он проверяет значение и возвращает, что это за тип: number, string, boolean, object, function и так далее.</p>
97 console.log(typeof 42); // 'number' - число console.log(typeof "42"); // 'string' - строка console.log(typeof true); // 'boolean' - логическое значение console.log(typeof undefined); // 'undefined' - значение не задано console.log(typeof null); // 'object' - такой результат - особенность JavaScript console.log(typeof {}); // 'object' - обычный объект console.log(typeof []); // 'object' - массив тоже объект console.log(typeof function(){}); // 'function' - функция<p>С помощью typeof удобно отлавливать ошибки в данных или писать универсальный код, который подстраивается под тип значений.</p>
97 console.log(typeof 42); // 'number' - число console.log(typeof "42"); // 'string' - строка console.log(typeof true); // 'boolean' - логическое значение console.log(typeof undefined); // 'undefined' - значение не задано console.log(typeof null); // 'object' - такой результат - особенность JavaScript console.log(typeof {}); // 'object' - обычный объект console.log(typeof []); // 'object' - массив тоже объект console.log(typeof function(){}); // 'function' - функция<p>С помощью typeof удобно отлавливать ошибки в данных или писать универсальный код, который подстраивается под тип значений.</p>
98 <p>Тернарный оператор ? : запускает один или другой блок кода в зависимости от условия.</p>
98 <p>Тернарный оператор ? : запускает один или другой блок кода в зависимости от условия.</p>
99 <p><strong>Условие</strong> - это вопрос, на который JavaScript может ответить true или false.</p>
99 <p><strong>Условие</strong> - это вопрос, на который JavaScript может ответить true или false.</p>
100 <ul><li>5 &gt; 2 - да, это правда;</li>
100 <ul><li>5 &gt; 2 - да, это правда;</li>
101 <li>10 === 7 - нет, это ложь.</li>
101 <li>10 === 7 - нет, это ложь.</li>
102 </ul><p>Общий вид:</p>
102 </ul><p>Общий вид:</p>
103 условие ? значение_если_да : значение_если_нет;<p>Если условие истинно, срабатывает первая часть. Если оно ложно, срабатывает вторая.</p>
103 условие ? значение_если_да : значение_если_нет;<p>Если условие истинно, срабатывает первая часть. Если оно ложно, срабатывает вторая.</p>
104 let num = 100; // Создаём переменную num и кладём в неё число 100 // Проверяем: num больше или равна 0? // Если true, результат будет "A" // Если false, результат будет "B" let result = num &gt;= 0 ? "A" : "B"; // Выводим результат в консоль console.log(result); // A<p>Логические операторы помогают принимать решения в коде. Они проверяют условия и возвращают результат - true или false. Всего таких операторов три: &amp;&amp; (И), || (ИЛИ) и ! (НЕ).</p>
104 let num = 100; // Создаём переменную num и кладём в неё число 100 // Проверяем: num больше или равна 0? // Если true, результат будет "A" // Если false, результат будет "B" let result = num &gt;= 0 ? "A" : "B"; // Выводим результат в консоль console.log(result); // A<p>Логические операторы помогают принимать решения в коде. Они проверяют условия и возвращают результат - true или false. Всего таких операторов три: &amp;&amp; (И), || (ИЛИ) и ! (НЕ).</p>
105 <p>Логический оператор &amp;&amp; (И) действует как умножение, где ложь - это 0, а истина - это 1. Он возвращает true, только если оба условия - истина.</p>
105 <p>Логический оператор &amp;&amp; (И) действует как умножение, где ложь - это 0, а истина - это 1. Он возвращает true, только если оба условия - истина.</p>
106 <p>Сначала проверяется левая часть выражения; если она ложна, вторая часть не проверяется, и общий результат будет ложь, поскольку в любом случае так и получается. Если первое выражение истинно, то JavaScript проверит и результат второго.</p>
106 <p>Сначала проверяется левая часть выражения; если она ложна, вторая часть не проверяется, и общий результат будет ложь, поскольку в любом случае так и получается. Если первое выражение истинно, то JavaScript проверит и результат второго.</p>
107 console.log(false &amp;&amp; true); // false console.log(1 &gt; 0 &amp;&amp; 5 &lt; 3); // false - первое условие true, второе false console.log(false &amp;&amp; console.log("Я не выполнюсь")); // false - второе даже не запустится console.log(true &amp;&amp; console.log("Я выполнюсь!")); // true - выполнится вторая часть<p>Логический оператор || работает как сложение, только логическое. Оператор возвращает true, если хотя бы одно из условий - истина. Если первое условие - уже true, второе даже не проверяется.</p>
107 console.log(false &amp;&amp; true); // false console.log(1 &gt; 0 &amp;&amp; 5 &lt; 3); // false - первое условие true, второе false console.log(false &amp;&amp; console.log("Я не выполнюсь")); // false - второе даже не запустится console.log(true &amp;&amp; console.log("Я выполнюсь!")); // true - выполнится вторая часть<p>Логический оператор || работает как сложение, только логическое. Оператор возвращает true, если хотя бы одно из условий - истина. Если первое условие - уже true, второе даже не проверяется.</p>
108 <p>Как и в случае с логическим умножением, сначала проверяется левая часть выражения, но конструкция действует наоборот: если первая часть истинна, вторая часть не проверяется, и общий результат будет истинен. А если первое выражение ложно, то JavaScript проверит результат второго.</p>
108 <p>Как и в случае с логическим умножением, сначала проверяется левая часть выражения, но конструкция действует наоборот: если первая часть истинна, вторая часть не проверяется, и общий результат будет истинен. А если первое выражение ложно, то JavaScript проверит результат второго.</p>
109 console.log(false || true); // true console.log(0 == 5 || true); // true - первое условие false, но второе true console.log(true || console.log("Я не выполнюсь!")); // true - вторая часть не выполнится console.log(false || console.log("Я выполнюсь!")); // Я выполнюсь! - сработает вторая часть<p>Оператор ! меняет значение на противоположное: true становится false, false - true.</p>
109 console.log(false || true); // true console.log(0 == 5 || true); // true - первое условие false, но второе true console.log(true || console.log("Я не выполнюсь!")); // true - вторая часть не выполнится console.log(false || console.log("Я выполнюсь!")); // Я выполнюсь! - сработает вторая часть<p>Оператор ! меняет значение на противоположное: true становится false, false - true.</p>
110 <p>Пример:</p>
110 <p>Пример:</p>
111 // НЕ ложь = истина console.log(!false); // Вывод в консоль: true // НЕ истина = ложь console.log(!true); // Вывод в консоль: false<p>Этот оператор используют, чтобы проверить обратное условие. Например, если у нас есть переменная isAdmin и она содержит true, то !isAdmin вернёт false. Это можно использовать в ситуациях, когда код нужно выполнить только в случае, если пользователь не админ:</p>
111 // НЕ ложь = истина console.log(!false); // Вывод в консоль: true // НЕ истина = ложь console.log(!true); // Вывод в консоль: false<p>Этот оператор используют, чтобы проверить обратное условие. Например, если у нас есть переменная isAdmin и она содержит true, то !isAdmin вернёт false. Это можно использовать в ситуациях, когда код нужно выполнить только в случае, если пользователь не админ:</p>
112 if (!isAdmin) { console.log("Доступ запрещён"); }<p>Такая конструкция читается как "если пользователь не админ, показать сообщение".</p>
112 if (!isAdmin) { console.log("Доступ запрещён"); }<p>Такая конструкция читается как "если пользователь не админ, показать сообщение".</p>
113 <p>Оператор запятая (<em>,</em>) позволяет выполнить несколько выражений сразу в одной строке. Это редкий оператор, но иногда он бывает полезен.</p>
113 <p>Оператор запятая (<em>,</em>) позволяет выполнить несколько выражений сразу в одной строке. Это редкий оператор, но иногда он бывает полезен.</p>
114 <p>Это удобно, когда нужно компактно записать несколько действий - особенно в циклах или при инициализации переменных.</p>
114 <p>Это удобно, когда нужно компактно записать несколько действий - особенно в циклах или при инициализации переменных.</p>
115 let x = (1, 2, 3); console.log(x); // 3<p>В скобках выполняются все три выражения: 1, 2, 3. Но в переменную x попадёт только последнее - 3.</p>
115 let x = (1, 2, 3); console.log(x); // 3<p>В скобках выполняются все три выражения: 1, 2, 3. Но в переменную x попадёт только последнее - 3.</p>
116 <p>То же самое можно сделать с двумя переменными:</p>
116 <p>То же самое можно сделать с двумя переменными:</p>
117 let a, b; a = (b = 10, b + 5); console.log(a, b); // 15 10<p>Что происходит:</p>
117 let a, b; a = (b = 10, b + 5); console.log(a, b); // 15 10<p>Что происходит:</p>
118 <ul><li>b = 10 - в переменную b записали число 10.</li>
118 <ul><li>b = 10 - в переменную b записали число 10.</li>
119 <li>b + 5 - посчитали сумму: 10 + 5 = 15.</li>
119 <li>b + 5 - посчитали сумму: 10 + 5 = 15.</li>
120 <li>Всё выражение справа от = вернуло 15, и это значение записали в a.</li>
120 <li>Всё выражение справа от = вернуло 15, и это значение записали в a.</li>
121 </ul><p>Чаще всего оператор запятая встречается в циклах, где нужно управлять сразу несколькими переменными:</p>
121 </ul><p>Чаще всего оператор запятая встречается в циклах, где нужно управлять сразу несколькими переменными:</p>
122 // В цикле for два счётчика - i и j через запятую for (let i = 0, j = 10; i &lt; 5; i++, j--) { console.log(i, j); }<p>Вывод:</p>
122 // В цикле for два счётчика - i и j через запятую for (let i = 0, j = 10; i &lt; 5; i++, j--) { console.log(i, j); }<p>Вывод:</p>
123 0 10 1 9 2 8 3 7 4 6<p>При такой записи удобно одновременно увеличивать один счётчик (i++) и уменьшать другой (j--). Всё это происходит в одной строке - благодаря оператору запятая.</p>
123 0 10 1 9 2 8 3 7 4 6<p>При такой записи удобно одновременно увеличивать один счётчик (i++) и уменьшать другой (j--). Всё это происходит в одной строке - благодаря оператору запятая.</p>
124 <p><strong>Приоритеты операторов</strong>в JavaScript влияют на порядок выполнения операций в выражениях. По аналогии со школьной математикой сначала выполняется действие в скобках, потом умножение, потом сложение и так далее. Но в JavaScript таких правил последовательности намного больше.</p>
124 <p><strong>Приоритеты операторов</strong>в JavaScript влияют на порядок выполнения операций в выражениях. По аналогии со школьной математикой сначала выполняется действие в скобках, потом умножение, потом сложение и так далее. Но в JavaScript таких правил последовательности намного больше.</p>
125 <p>В таблице приведена важность операторов от самого высокого (1) до самого низкого приоритета (17).</p>
125 <p>В таблице приведена важность операторов от самого высокого (1) до самого низкого приоритета (17).</p>
126 <strong>Приоритет</strong><strong>Оператор</strong><strong>Описание</strong>1x++, x--Постфиксный инкремент/декремент2++x, --xПрефиксный инкремент/декремент3!, ~, +, -, typeofУнарные операторы, оператор приведения типа4**Возведение в степень5*, /, %Умножение, деление, деление с остатком6+, -Сложение, вычитание7&lt;&lt;, &gt;&gt;, &gt;&gt;&gt;Побитовые сдвиги - это редкий оператор, не описанный в статье8&lt;, &lt;=, &gt;, &gt;=Сравнения9==, !=, ===, !==Равенство10&amp;Побитовое И (AND) - это редкий оператор, не описанный в статье11^Побитовое исключающее ИЛИ (XOR) - это редкий оператор, не описанный в статье12|Побитовое ИЛИ - это редкий оператор, не описанный в статье13&amp;&amp;Логическое И14||Логическое ИЛИ15? :Тернарный оператор16=, +=, -=, *=, /=, %=, **=, &lt;&lt;=, &gt;&gt;=, &gt;&gt;&gt;=, &amp;=, ^=, |=Операторы присваивания17,Операторы присваивания<p>Пример c арифметическими операторами и сравнение:</p>
126 <strong>Приоритет</strong><strong>Оператор</strong><strong>Описание</strong>1x++, x--Постфиксный инкремент/декремент2++x, --xПрефиксный инкремент/декремент3!, ~, +, -, typeofУнарные операторы, оператор приведения типа4**Возведение в степень5*, /, %Умножение, деление, деление с остатком6+, -Сложение, вычитание7&lt;&lt;, &gt;&gt;, &gt;&gt;&gt;Побитовые сдвиги - это редкий оператор, не описанный в статье8&lt;, &lt;=, &gt;, &gt;=Сравнения9==, !=, ===, !==Равенство10&amp;Побитовое И (AND) - это редкий оператор, не описанный в статье11^Побитовое исключающее ИЛИ (XOR) - это редкий оператор, не описанный в статье12|Побитовое ИЛИ - это редкий оператор, не описанный в статье13&amp;&amp;Логическое И14||Логическое ИЛИ15? :Тернарный оператор16=, +=, -=, *=, /=, %=, **=, &lt;&lt;=, &gt;&gt;=, &gt;&gt;&gt;=, &amp;=, ^=, |=Операторы присваивания17,Операторы присваивания<p>Пример c арифметическими операторами и сравнение:</p>
127 // Объявляем три переменные a, b, c let a = 5; let b = 10; let c = 20; // Расчёт выражения // Сначала выполнится деление: c / 2 = 20 / 2 = 10 // Далее выполнится сложение: a + b = 5 + 10 = 15 // И в конце сравнение получившихся результатов: 15 &gt; 10 = Истина (true) let result = a + b &gt; c / 2; console.log(result); // Вывод в консоль: true<p>Операторы выполняются в математическом порядке. Сначала деление, потом сложение и в конце сравнение.</p>
127 // Объявляем три переменные a, b, c let a = 5; let b = 10; let c = 20; // Расчёт выражения // Сначала выполнится деление: c / 2 = 20 / 2 = 10 // Далее выполнится сложение: a + b = 5 + 10 = 15 // И в конце сравнение получившихся результатов: 15 &gt; 10 = Истина (true) let result = a + b &gt; c / 2; console.log(result); // Вывод в консоль: true<p>Операторы выполняются в математическом порядке. Сначала деление, потом сложение и в конце сравнение.</p>
128 <p>Пример c логическими операторами:</p>
128 <p>Пример c логическими операторами:</p>
129 // Объявляем три переменные x, y, z let x = true; let y = false; let z = true; // Расчёт выражения // Сначала выполнится логическое умножение y &amp;&amp; z = false &amp;&amp; true = false (ложь) // Далее: x || false = true || false = true (Истина) let result = x || y &amp;&amp; z; console.log(result); // Вывод в консоль: true<p>Логические операторы выполняются также по математическим законам: сначала логическое умножение, затем логическое сложение и так далее в соответствии с таблицей.</p>
129 // Объявляем три переменные x, y, z let x = true; let y = false; let z = true; // Расчёт выражения // Сначала выполнится логическое умножение y &amp;&amp; z = false &amp;&amp; true = false (ложь) // Далее: x || false = true || false = true (Истина) let result = x || y &amp;&amp; z; console.log(result); // Вывод в консоль: true<p>Логические операторы выполняются также по математическим законам: сначала логическое умножение, затем логическое сложение и так далее в соответствии с таблицей.</p>
130 <p>Мы уже писали, что в JavaScript при вычислениях значения могут автоматически менять свой тип. Неявное приведение типов часто приводит к неожиданным результатам.</p>
130 <p>Мы уже писали, что в JavaScript при вычислениях значения могут автоматически менять свой тип. Неявное приведение типов часто приводит к неожиданным результатам.</p>
131 // Строка превращается в число, console.log("5" - 1); // Вывод в консоль (Тип данных Числа): 4 // Число превращается в строку console.log("5" + 1); // Вывод в консоль (Тип данных Строка): 51<p>Чтобы избежать таких ситуаций, лучше заранее проверять типы данных. Это можно сделать с помощью оператора typeof:</p>
131 // Строка превращается в число, console.log("5" - 1); // Вывод в консоль (Тип данных Числа): 4 // Число превращается в строку console.log("5" + 1); // Вывод в консоль (Тип данных Строка): 51<p>Чтобы избежать таких ситуаций, лучше заранее проверять типы данных. Это можно сделать с помощью оператора typeof:</p>
132 console.log(typeof "5"); // string console.log(typeof 5); // number<p>Если вы точно знаете, какой тип вам нужен, используйте явное преобразование:</p>
132 console.log(typeof "5"); // string console.log(typeof 5); // number<p>Если вы точно знаете, какой тип вам нужен, используйте явное преобразование:</p>
133 // Преобразуем строку "5" в число console.log(Number("5") - 1); // 4 // Преобразуем число 5 в строку console.log(String(5) + "1"); // 51<p>Новичкам в JavaScript бывает непросто сразу понять разницу между тремя равно: =, == и ===. Особенно трагично перепутать = и === : вместо того чтобы сравнивать значение, вы его перезаписываете.</p>
133 // Преобразуем строку "5" в число console.log(Number("5") - 1); // 4 // Преобразуем число 5 в строку console.log(String(5) + "1"); // 51<p>Новичкам в JavaScript бывает непросто сразу понять разницу между тремя равно: =, == и ===. Особенно трагично перепутать = и === : вместо того чтобы сравнивать значение, вы его перезаписываете.</p>
134 <p>В следующем примере значение в скобочках будет не сравниваться, а присваиваться:</p>
134 <p>В следующем примере значение в скобочках будет не сравниваться, а присваиваться:</p>
135 // Объявляем переменную a let a = 0; // Ошибка. Здесь не сравнение, а присваивание if (a = 10) { console.log("Выполняется всегда"); // Вывод в консоль: Выполняется всегда } console.log(a); // Вывод в консоль: 10<p>Просто запомните, что количество знаков равно в операторе имеет значение.</p>
135 // Объявляем переменную a let a = 0; // Ошибка. Здесь не сравнение, а присваивание if (a = 10) { console.log("Выполняется всегда"); // Вывод в консоль: Выполняется всегда } console.log(a); // Вывод в консоль: 10<p>Просто запомните, что количество знаков равно в операторе имеет значение.</p>
136 <p>Все ответы на эти вопросы вы можете найти в статье.</p>
136 <p>Все ответы на эти вопросы вы можете найти в статье.</p>
137 <p>1. В чём разница между операторами == и === и какой из них лучше использовать?</p>
137 <p>1. В чём разница между операторами == и === и какой из них лучше использовать?</p>
138 <p>2. Что выведет код с оператором запятая (,) и для чего он нужен?</p>
138 <p>2. Что выведет код с оператором запятая (,) и для чего он нужен?</p>
139 let x = (45, 78, 33, 11); console.log(x);<p>3. Объясните разницу между префиксной и постфиксной формой инкремента и декремента.</p>
139 let x = (45, 78, 33, 11); console.log(x);<p>3. Объясните разницу между префиксной и постфиксной формой инкремента и декремента.</p>
140 console.log(3 % 10); console.log(-10 % 3);<p>4. Какие операторы используются в этом коде и что они выведут?</p>
140 console.log(3 % 10); console.log(-10 % 3);<p>4. Какие операторы используются в этом коде и что они выведут?</p>
141 let x = 85; let y = x &gt; 75 ? "B" : "F"; console.log(y);<a>Научитесь: Профессия Фронтенд-разработчик + ИИ Узнать больше</a>
141 let x = 85; let y = x &gt; 75 ? "B" : "F"; console.log(y);<a>Научитесь: Профессия Фронтенд-разработчик + ИИ Узнать больше</a>