Основные операторы в 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'. Это специально сделано для распознавания функций среди остальных объектов.