Цикл статей «Учебник Javascript».
Следующая статья — «Операторы сравнения в Javascript».
Предыдущая статья — «Javascript. Определение типа переменной с помощью typeof.».
Операции в Javascript бывают унарные, бинарные и тернарные.
Унарные операции это операции, которые применяются к одному операнду: ++ , -- , ~ , ! ; бинарные операции применяются к двум операндам: + , - , * /, . , % , & , | , ^ , && , || , = , < , > , == , === , <= , >= , != , !== ; тернарный операнд ?: применяется к трём операндам.
Оператор инкремента
++
Увеличивает значение операнда на единицу. Есть постфиксный вариант и префиксный. Постфиксный вариант сначала возвращает текущее значение, а затем увеличивает на единицу. Префиксный вариант сначала увеличивает на единицу, а затем возвращает значение. Может применяться только к переменной. Нельзя писать 3++ .
1 2 3 4 5 6 7 |
var x = 1; alert(x++); // 1 alert(x); // 2 var y = 1; alert(++y); //2 alert(y); //2 |
Оператор декремента
--
Уменьшает значение операнда на единицу. Имеет две формы, как и оператор инкремента. Постфиксный вариант сначала возвращает текущее значение, а затем увеличивает на единицу. Префиксный вариант сначала увеличивает на единицу, а затем возвращает значение. Может применяться только к переменной. Нельзя писать 4-- .
1 2 3 4 5 6 7 |
var x = 1; alert(x--); // 1 alert(x); // 0 var y = 1; alert(--y); // 0 alert(y); //0 |
Оператор логического отрицания
!
Унарный оператор логического отрицания возвращает false, если операнд равен true и true, если операнд равен false. Причём значения 0, null, undefined, «» (пустая строка), NaN считаются за false. Любое число, Infinity, объект, непустая строка считаются за true.
1 2 3 4 5 6 7 8 9 10 |
var x = true; alert(!x); // false alert(!0); // true alert(!-3); // false alert(!4); // false alert(!""); //true alert(!null); //true alert(!undefined); //true alert(!Infinity); //false alert(!NaN); //true |
Операторы сложение, вычитания, умножения, деления, взятие остатка
Бинарные операторы сложения, вычитания, умножения и деления имеют вполне очевидное значение.
1 2 3 4 5 |
alert(3+5); //8 alert(5-1); //4 alert(3*2); //6 alert(10 / 5); //2 alert(10 % 3); //1 Остаток от деления 10 на 3 |
Оператор присваивания
=
Оператор присваивания присваивает переменной, находящейся в левой части значение выражения в правой части.
1 2 3 4 5 6 7 8 9 |
var x = 3; var y = 3+4-3; alert(x); // 3 alert(y); // 4 // Можно выстраивать цепочку присваивания, так как оператор присваивания возвращает значение. x=y=7; alert(x); // 7 alert(y); // 7 |
Побитовые операторы
Побитовые операторы работают также, как в Java. Вот их список:
- Побитовый И &
- Побитовый ИЛИ |
- Побитовый XOR ^
- Побитовое отрицание ~
- Сдвиг влево <<
- Сдвиг вправо >>
- Сдвиг вправо с заполнением нулём >>>
Я не буду их здесь описывать, так как их действие очевидно, для тех, кто знаком с бинарной арифметикой.
Логический И, логический ИЛИ
Логический И возвращает true, если оба операнда true. Логический ИЛИ возвращает true, если один из операндов false. Во всех остальных случаях они возвращают false.
1 2 3 4 5 |
alert (true && false); //false alert (false || true); //true var x = true; alert(x && false); //false alert(5>4 || false) //true |
Оператор запятая
Позволяет перечислять выражения через запятую. Выражения вычисляются, но возвращается только результат последнего выражения.
1 2 3 |
a = (3, 8); alert( a ); // 8 |
Конкатенация строк
Если оператор + применить к строкам, то результатом будет объединённая строка. Если один из операндов строка, то второй операнд преобразуется к строке и затем строки соединяются.
1 2 |
alert("vasya" + 3); // vasya3 alert ("vasya " + "petrov"); // vasya petrov |
Унарный плюс
Унарный плюс не меняет знак числа. Можно использовать для преобразования строки в число.
1 2 3 4 |
alert(+"3"+3); //6 alert(+5); //5 var x = -3; alert(+x); // -3 |
Унарный минус
Унарный минус меняет знак числа на противоположный.
1 2 3 |
alert(-"3"+3); //0 var x = -3; alert(-x); // 3 |
Приоритет операций
Все операции выполняются слева направо согласно приоритету. Те операции, у которых приоритет выше, выполняются раньше. Например, var x = 3+4*2. Здесь сначала будет выполнено умножение, затем сложение, затем присвоение.
Таблица приоритетов операций
Эта таблица отсортирована от наивысшего (19)до наименьшего (0) приоритета.
Приоритет | Тип оператора | Ассоциативность | Операторы |
---|---|---|---|
19 | Группировка | n/a | ( … ) |
18 | Доступ к члену | left-to-right | … . … |
Доступ к вычисленному члену | left-to-right | … [ … ] |
|
new (со списком аргументов) | n/a | new … ( … ) |
|
17 | Вызов функции | left-to-right | … ( … ) |
new (без списка аргументов) | right-to-left | new … |
|
16 | Постфиксный инкремент | n/a | … ++ |
Постфиксный декремент | n/a | … -- |
|
15 | Логическое отрицание | right-to-left | ! … |
Бинарное отрицание | right-to-left | ~ … |
|
Унарный плюс | right-to-left | + … |
|
Унарный минус | right-to-left | - … |
|
Префиксный инкремент | right-to-left | ++ … |
|
Префиксный декремент | right-to-left | -- … |
|
typeof | right-to-left | typeof … |
|
void | right-to-left | void … |
|
delete | right-to-left | delete … |
|
14 | Умножение | left-to-right | … * … |
Деление | left-to-right | … / … |
|
Остаток от деления | left-to-right | … % … |
|
13 | Сложение | left-to-right | … + … |
Вычитание | left-to-right | … - … |
|
12 | Бинарный сдвиг влево | left-to-right | … << … |
Бинарный сдвиг вправо | left-to-right | … >> … |
|
Бинарный сдвиг вправо с заполнением нулём | left-to-right | … >>> … |
|
11 | Меньше | left-to-right | … < … |
Меньше или равно | left-to-right | … <= … |
|
Больше | left-to-right | … > … |
|
Больше или равно | left-to-right | … >= … |
|
in | left-to-right | … in … |
|
instanceof | left-to-right | … instanceof … |
|
10 | Равенство | left-to-right | … == … |
Неравенство | left-to-right | … != … |
|
Строгое равенство | left-to-right | … === … |
|
Строгое неравенство | left-to-right | … !== … |
|
9 | Бинарный И | left-to-right | … & … |
8 | Бинарный XOR | left-to-right | … ^ … |
7 | Бинарный ИЛИ | left-to-right | … | … |
6 | Логаический AND | left-to-right | … && … |
5 | Логический OR | left-to-right | … || … |
4 | Условие (тернарный оператор) | right-to-left | … ? … : … |
3 | Присваивание | right-to-left | … = … |
… += … |
|||
… -= … |
|||
… *= … |
|||
… /= … |
|||
… %= … |
|||
… <<= … |
|||
… >>= … |
|||
… >>>= … |
|||
… &= … |
|||
… ^= … |
|||
… |= … |
|||
2 | yield | right-to-left | yield … |
1 | Spread | n/a | ... … |
0 | Comma / Sequence | left-to-right | … , … |
Цикл статей «Учебник Javascript».
Следующая статья — «Операторы сравнения в Javascript».
Предыдущая статья — «Javascript. Определение типа переменной с помощью typeof.».
В таблице приоритетов операций опечатка:
Логаический AND
А статья полезная. Спасибо)