Математические операции
Результаты мат. операций дополняются значениями Infinity, -Infinity, NaN
Унарные: +, -
Бинарные: +, -, *, /, % (остаток от деления).
Бинарный + при хотя бы одном нечисленном аргументе приводит оба аргумента к строковому типу (приведение к строке начинается на первом строковом аргументе, до этого все числовые операции выполняются. 2 + 2 + “aaa” = “4aaa” “aaa” + 2 + 2 = “aaa22”). Все остальные армифметические операции приводят результат к числу.
Таблица приоритетов - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence
Присваивание также возвращает значение (равное присвоенному значению)
alert (x = 3) присвоит значение 3 переменной х и вернет 3.
Побитовые операторы
Унарные: ~ - not
Бинарные: | - or, & - and, ^ - xor, сдвиги - <<, >>. >>>
<< n - сдвиг влево на n бит с заполнением нулями справа и отбрасыванием битов слева.
>> n - сдвиг влево на n бит с заполнением знаковым битом слева (0 для положительных и 1 для отрицательных чисел) и отбрасыванием битов справа.
>>> n - сдвиг влево на n бит с заполнением нулями слева и отбрасыванием битов справа
Применение:
a ^ b ^ b = a - xor можно использовать для примитивного шифрования.
a ^ 0 - получение целочисленной части числа a
|, & - битовые флаги при проверке прав доступа.
~n - проверка на -1 (только при n=-1 возвращается 0)
- степение двойки.
Оператор запятая (,) - выполняет последовательность действий до и после запятой и возвращает значение последнего из них. Часто используется при определении переменных и задании начальных условий циклов.
При сравнении операнды преобразуются к числам (в т.ч. и булевские значения). Для строго сравнения без приведения типов используются операторы === и !==
null == undefined // true
null === undefined // false
null и undefined равны друг другу и не равны чему бы то ни было еще.
При этом
null >= 0, null <= 0 // true, true
Условные операторы
if (cond1) { do1; } else if (cond2) { do2; } else { do3; }
switch(x) {
case 'value1': // if (x === 'value1')
...
[break]
case 'value2': // if (x === 'value2')
...
[break]
default:
...
[break]
}
При отсутствии break выполняются все оставшиеся операторы switch без проверки условий.
Результат вычисления логического выражения 0, ‘’ (пустая строка), NaN, undefined расценивается как false, все остальные - true.
Важно! {}, [], “0”, “ “ - true.
Краткое условие - условие ? значение1 : значение2
Допускается составная конструкция:var res = (x == 1) ? 'val1' :
(x == 2) ? 'val2' :
'val3';
Логические операторы
||, &&, ! - или, и, не
Если условий несколько, то для "И" выполнение прекращается на первом false, для "ИЛИ" - на первом true.
Вместо краткого условного оператора можно использовать логические операторы:
x === 3 && 10 || 5 эквивалентно x === 3 ? 10 : 5;
x === 1 && 10 || x === 2 && 20 || x === 3 && 30 : 40; - составной условный оператор.
Циклы
while (cond) { // body }
do { // body } while (cond)
for ([begin]; [cond]; [step]) { // body }
Комментариев нет :
Отправить комментарий