falsy значения и typeof
- 0
- -0
- NaN
- undefined
- null
- ""
- false
Сравнение: == vs ===
1 == true
1 === true
0 == false
0 === false
5 == 5
5 === 5
=== это две проверки:
- проверка на значения ==
- проверка на тип
логические операторы
&&
| 0 |
0 |
1 |
1 |
| 0 |
1 |
0 |
1 |
| 0 |
0 |
0 |
1 |
||
| 0 |
0 |
1 |
1 |
| 0 |
1 |
0 |
1 |
| 0 |
1 |
1 |
1 |
&& возвращает false или самый правый операнд
let zero = 0 && 1 && 2 && 3 && 4;
let next = 1 && 2 && 0 && 4 && 5;
let right = 5 && 4 && 3 && 2 && 1;
|| возвращает true или самый правый операнд
let left = 1 || 2 || 3 || null;
let next = 0 || 0 || 0 || 3;
let nextZero = 0 || 0 || 0|| null;
let zero = 0 || 0 || 0 || 0;
побитовые операторы
приводят 64-битные числа JS к 32-битному числу с возможностью потерять информацию, если число имело значение больше 32 разрядов
побитовое ~ NOT
~-2
~-1
~0
~1
~2
побитовое | OR
01 100 ||
11 000
------
11 100
побитовое & AND
01 100 &&
10 100
------
00 100
побитовый ^ XOR
01 100 ^ 11 000 ^
10 100 10 100
------ ------
11 000 01 100
XOR как основа для шифрования
let word = 12345;
let key = 40831;
let cript = word ^ key;
let uncript = cript ^ key;
cript.toString(2)
XOR для обмена значениями
let first = 100;
let second = 200;
first ^= second;
second ^= first;
first ^= second;