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