Number & BigInt
// целые (integers)
123 || +123; // целое положительное (+123)
-123; // целое отрицательное
// Дробные (floating point)
123.123; // дробное
0.123; // дробное нецелое .123 (0 можно опустить)
// Со степенью (Scientific notation)
1e6; // 1000000 (1 * 10^6)
1e-6; // 0.000001 (1 * 10^-6)
// Binary, Octal, and Hexadecimal
0b1010; // Binary (10 in decimal) - Двоичное исчисление
0b1001; // 9
0b1001 === 2 ** 3 * 1 + 2 ** 2 * 0 + 2 ** 1 * 0 + 2 ** 0 * 1; // true
0o12; // Octal (10 in decimal) - Восьмиричное исчисление
0xabc123; // 11256099 16-чная
0xff; // Hexadecimal (255 in decimal) - hex-format
// спец. значения number
NaN; // not a number
Infinity || -Infinity;
123 / 0 === Infinity;
// разделитель
1_000_000; // _ - разделитель для удобства, _ игнорируется парсером
// диапозон
// от -(2 ** 53 − 1) до 2 ** 53 − 1
bigint
typeof 1234567890123456789012345678901234567890n; // 'bigint'
BigInt(9997000254999999);
Арифметические действия
// + - оперетор сложения
// - - оперетор вычитания
// * - оперетор умножения
// / - оперетор деления
// ** - оператор возведения в степень
// % - остаток от деления
1 + 2; // 3
1 - 2; // -1
1 * 2; // 2
1 / 2; // 0.5
2 ** 5; // 32, если еще одна альтернатива Math.pow(2, 3);
3 % 2; // 1
1 % 5 === (1 + 5) % 5;
// скобки учитываются как в арифметике
(0.1 * 10 + 0.2 * 10) / 10; // 0.3
// Визуальная ошибка в JS. Фундаментальная особенность хранения дробных чисел в памяти компьютера, с ней нужно уметь работать.
0.1 + 0.2; // 0.30000000000000004
0.2 + 0.7; // 0.8999999999999999 - известая ошибка округления
// прочие мат операций
undefined + 1; // NaN
0 / 0; // NaN
null + 1; // 1
true + 1; // 2
false + 1; // 1
undefined + '1'; // 'undefined1'
null + '1'; // 'null1'
true + '1'; // 'true1'
false + '1'; // 'false1';
// Также при вычитании, делении, возведении в квадрат
undefined * 1; // NaN
null * 1; // 0
true * 1; // 1
false * 1; // 0
undefined * '1'; // NaN
null * '1'; // 0
true * '1'; // 1
false * '1'; // 0