суббота, 20 сентября 2014 г.

ОПЕРАТОРЫ в JavaScript


Математические операции

Результаты мат. операций дополняются значениями Infinity, -Infinity, NaN


Унарные: +, -
Бинарные: +, -, *, /, % (остаток от деления).


Бинарный + при хотя бы одном нечисленном аргументе приводит оба аргумента к строковому типу (приведение к строке начинается на первом строковом аргументе, до этого все числовые операции выполняются. 2 + 2 + “aaa” = “4aaa”    “aaa” + 2 + 2 = “aaa22”). Все остальные армифметические операции приводят результат к числу.




Присваивание также возвращает значение (равное присвоенному значению)
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)
- степение двойки.

При использовании побитовых операторов переменные скрыто приводятся к 32-битовому знаковому целому.


Оператор запятая (,) - выполняет последовательность действий до и после запятой и возвращает значение последнего из них. Часто используется при определении переменных и задании начальных условий циклов.


При сравнении операнды преобразуются к числам (в т.ч. и булевские значения). Для строго сравнения без приведения типов используются операторы === и !==
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 }

Комментариев нет :

Отправить комментарий