falsy значения и typeof

Сравнение: == vs ===


1 == true     // true
1 === true    // false

0 == false    // true
0 === false   // false

5 == 5        // true
5 === 5       // true
            

=== это две проверки:

  1. проверка на значения == true or false
  2. проверка на тип number or boolean

логические операторы

&&
0 0 1 1
0 1 0 1
0 0 0 1
||
0 0 1 1
0 1 0 1
0 1 1 1
!
!0 !1
true false

&& возвращает false или самый правый операнд


let zero = 0 && 1 && 2 && 3 && 4;
     0

let next = 1 && 2 && 0 && 4 && 5;
     0

let right = 5 && 4 && 3 && 2 && 1; 
     1

|| возвращает true или самый правый операнд


let left =  1 || 2 || 3 || null;
   1 

let next =  0 || 0 || 0 || 3;
    3

let nextZero =  0 || 0 || 0|| null;
null

let zero =  0 || 0 || 0 || 0;
       0


побитовые операторы

приводят 64-битные числа JS к 32-битному числу с возможностью потерять информацию, если число имело значение больше 32 разрядов что не рекомендует эти операции к использованию

Bitwise operators

побитовое ~ NOT


~-2 // 1 
~-1  // 0 
~0  // -1 
~1  // -2 
~2  // -3 

            

побитовое | 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; 
0b011000000111001; 

let key = 40831;   
0b1001111101111111;  

let cript = word ^ key; 
44870  или 0b1010111101000110

let uncript = cript ^ key; 
12345 

cript.toString(2)
    

XOR для обмена значениями


let first = 100;
let second = 200;

first  ^= second; 
second ^= first; 
first  ^= second; 
first is 200 
second is 100 

    
back