Основные операторы в JavaScript

Для работы с различными элементами и переменными используются операторы.

Арифметические операторы

Используются для совершения арифметических операций. Если оператор применяется только к одному элементу, то он называется унарным, если к двум - бинарным. Все арифметические операторы кроме бинарного плюса преобразуют переменные в числовой тип.

Унарные арифметические операторы

Оператор Описание
+ Не производит арифметическое действие.

Унарный плюс используется для преобразования переменной в числовой тип.

alert(+'10'); // число 10
alert(+'str'); // NaN
alert(+''); // число 0
- Меняет знак числа на противоположный.
alert(-'-1'); // число 1
++ Инкремент. Увеличивает переменную на 1. Применяется только к переменным.
var i = 1;
alert(i++); /* число 1 (сначала выводит значение i, затем увеличивает его на 1) */
alert(++i); /* число 3 (сначала увеличивает i на 1, затем выводит его значение) */
-- Декремент. Уменьшает переменную на 1. Применяется только к переменным.
var i = 5;
alert(i--); /* число 5 (сначала выводит значение i, затем уменьшает его на 1) */
alert(--i); /* число 3 (сначала уменьшает i на 1, затем выводит его значение) */

Бинарные арифметические операторы

Оператор Описание
+ Сложение для чисел.
Если хотя бы один из элементов выражения будет строкового типа, тогда выполнится слияние и результатом будет строка.
alert(1 + 2); // число 3
alert(1 + '2'); // строка "12"
alert('Java' + 'Script'); // строка "JavaScript"

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

alert(1 + ''); // строка "1"
- Вычитание.
* Умножение.
/ Деление.
% Остаток от деления по модулю.
alert(16 % 6); // число 4

Операторы с присваиванием

Для задания переменной или свойству определенного значения используется оператор присваивания. Для сокращения записи некоторых выражений в JavaScript используются комбинации оператора присваивания с другими операторами.

Оператор Описание
= Присваивание. Элементу слева от знака = присваивается значение, расположенное справа от знака =.
+= Сложение для чисел или слияние для строк.
i += 5; /* аналогично i = i + 5 */
-= Вычитание.
i -= 5; /* аналогично i = i - 5 */
*= Умножение.
i *= 5; /* аналогично i = i * 5 */
/= Деление.
i /= 5; /* аналогично i = i / 5 */

Операторы сравнения

В программировании большую роль играет сравнение величин. Сравнивать можно не только числа, но и данные других типов. Результатом действия операторов сравнения является значение булевого типа, т.е. true (правда) или false (ложь).

Оператор Описание
> Больше.
< Меньше.
>= Больше или равно.
<= Меньше или равно.
== Равно.
!= Не равно.
=== Строго равно.
!== Строго не равно.
alert(1 != 2); // true
alert(2 < 2); // false

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

При проверке равенства (оператором ==) null и undefined не преобразуются. Соответственно, они ничему не равны. При этом они равны друг другу. Сравнение данных типов лучше избегать.

alert('' == false); /* true, '' преобразуется в 0, false в 0 */
alert('qwerty' != null); /* true, 'qwerty' преобразуется в NaN, null в 0 */
alert(null == undefined); /* true, null и undefined не преобразуются */

NaN не равен NaN.

alert(NaN != NaN); // true

Сравнение строк

Сравнение двух строк производится не преобразованием в числа, а посимвольно. Сначала сравниваются первые символы обеих строк. Если символы равнозначны, тогда сравниваются вторые символы строк, и т.д. Сравнение символов производится по их коду в кодировке Unicode. Пустой символ в этой кодировке имеет наименьшее значение, поэтому любой символ всегда больше, чем отсутствие символа.

alert('qwer' < 'qwerty'); // true
alert('a' > 'A'); /* true, код символа 'a' больше, чем код 'A' */

Строгое сравнение

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

alert(0 != false); // false
alert(0 !== false); // true

Логические операторы

Логические операторы используются для написания логических выражений. В JavaScript всего три логических оператора: ИЛИ, И, НЕ. Они применимы к любым типам данных.

Оператор ИЛИ

Оператор ИЛИ преобразует переданные ему значения в логический (булевый) тип и работает по правилу:

  • Если хотя бы одно значение является true, тогда возвращает его значение и прекращает выполнение.
  • Если все значения false, тогда возвращает последнее значение.

Возвращаемое значение может быть любого типа. Оператор ИЛИ обозначается двумя вертикальными линиями ||.

var a = 1 || 0;
alert(a); // 1

В одном выражении может использоваться несколько операторов ИЛИ. JavaScript проверяет значения слева направо и останавливается при первом найденном true.

alert(0 || null || NaN); /* NaN, так как все false */
alert(0 || 1 || 2); // 1

Оператор И

Оператор И преобразует переданные ему значения в логический (булевый) тип и работает по правилу:

  • Если хотя бы одно значение является false, тогда возвращает его значение и прекращает выполнение.
  • Если все значения true, тогда возвращает последнее значение.

Возвращаемое значение может быть любого типа. Оператор И обозначается двумя амперсендами &&.

var a = 1 && 0;
alert(a); // 0

В одном выражении может использоваться несколько операторов И. JavaScript проверяет значения слева направо и останавливается при первом найденном false.

alert(1 && 2 && 3); /* 3, так как все true */
alert(1 && null && NaN); // null

Оператор НЕ

Оператор НЕ получает в качестве аргумента только одно значение. Он преобразует это значение в логический (булевый) тип и возвращает значение, противоположное ему. Оператор НЕ обозначается восклицательным знаком !.

alert(!null); /* преобразует null в false и возвращает true */

Результатом действия оператора НЕ всегда является значение логического типа. Это используется для преобразования любого значения в логический (булевый) тип.

alert(!!null); // false
alert(!!'anything'); // true

Оператор typeof

Оператор typeof возвращает строку, содержащую тип переданного аргумента. Аргумент можно передать без скобок:

typeof(str);
typeof str; /* так тоже можно */

Возвращаемые значения представлены в таблице:

Тип аргумента Значение
Null 'object'
Undefined 'undefined'
Number 'number'
String 'string'
Boolean 'boolean'
Функции 'function'
Объекты 'object'

Для типа Null возвращается 'object'. Так было с момента создания JavaScript и впоследствии не изменялось, чтобы не испортить пользовательские скрипты.

Функции фактически являются объектами, но для них возвращается несуществующий тип 'function'. Это специально сделано для распознавания функций среди остальных объектов.