undefined и null. Всё остальное — объекты (Object): массивы, функции, регулярные выражения, даты и т. д.NumberBigIntStringBooleanSymbolNullUndefinedObjectArrayFunctionRegExpDateMapSet0, -20, 42, 15000000, 15_000_000 (integer)
0xff (hex), 0o377 (octal), 0b1010 (binary)
3.14, -2345.789, .333333
6.02e23, 1.4738223E-32
NaN, Infinity, -Infinity
42n, 9007199254740993n (BigInt)
'', "", 'name="myform"', "3.14"
"π is the ratio of a circle's…"
"This string\nhas two lines"
'You\'re right, it can\'t be a quote'
`2 + 2 = ${2 + 2}` (шаблонная строка)
\n, \t, \", \', \\, \u, \u{1F600}
Самый простой способ поработать с выражениями — это воспользоваться консолью (через терминал или браузер).

Подборка ссылок и глав из книг, с простыми объяснениями на тему типов данных, литералов, выражений и т. д.



Некоторые операторы ведут себя по-разному в разных контекстах. Например, оператор + в одном контексте обозначает сложение чисел, а в другом — соединение строк.
. ?. [] (refinement, optional chaining)() new (invocation, create)! - + ++ -- typeof delete (unary operators)** (exponentiation, ES2016)* / % (Multiplication, division, remainder)+ - (Addition/concatenation, subtraction)< <= > >= (inequality)in instanceof (objects and keys)=== !== (strict equality)&& || ?? (Logical and, Logical or, nullish coalescing)?: (ternary)= += -= *= /= %= **= &&= ||= ??= (assignment), (comma)При использовании операторов можно ещё использовать и скобки, чтобы (как в школе!) избежать путаницы в выражениях вида: 4+6 * 3 → (4+6) * 3
Math.pow (возведение в степень; с ES2016 есть и оператор **) или Math.abs (модуль числа).Как ни странно, выражение 0.1 + 0.2 === 0.3 возвращает false. Всё из-за особенностей того, как JavaScript хранит числа с плавающей точкой в памяти (стандарт IEEE 754).

Math.pow() ** возведение в степеньMath.sqrt() квадратный кореньMath.round() округлениеMath.ceil() округление вверхMath.floor() округление внизMath.abs() модуль числаMath.max() максимальное числоMath.min() минимальное число=== !== равенства< <= > >= неравенства&& || логические и и или ! логическое не?: тернарный оператор?? значение по умолчанию для null/undefined+ addition- subtraction* multiplication/ division% remainderlet (значение можно менять) и const (нельзя переприсвоить). Старый var встречается в коде, написанном до 2015 года.
let x = 0; x = x + 1; x += 1; x++;
while for for…of do…while if if…else if…else if…else
There are only two hard things in Computer Science:
cache invalidation, naming things, and off-by-one errors.


await break case catch class const continue debugger default delete do else enum export extends false finally for function if implements import in instanceof interface let new null package private protected public return static super switch this throw true try typeof var void while with yield

const square = function (x) {
return x * x;
};
// или стрелочной функцией (ES2015):
const square2 = (x) => x * x;
console.log(square(12)); // → 144







