You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* number для любых чисел: целочисленных или чисел с плавающей точкой; целочисленные значения ограничены диапазоном ±(253-1).
* bigint для целых чисел произвольной длины.
* boolean для true/false.
* string для строк. Строка может содержать ноль или больше символов, нет отдельного символьного типа.
* null для неизвестных значений – отдельный тип, имеющий одно значение null. (Для null возвращается "object" – это ошибка в языке, на самом деле это не объект)
* undefined для неприсвоенных значений – отдельный тип, имеющий одно значение undefined.
* object для более сложных структур данных.
* symbol для уникальных идентификаторов.
* Если функция объявлена как отдельная инструкция в основном потоке кода, то это Function Declaration.
* Если функция была создана как часть выражения, то считается, что эта функция объявлена при помощи Function Expression.
* Function Declaration обрабатываются перед выполнением блока кода. Они видны во всём блоке.
* Функции, объявленные при помощи Function Expression, создаются, только когда поток выполнения достигает их.
Символы:
* `Object.getOwnPropertySymbols(obj)` – с его помощью можно получить все свойства объекта с ключами-символами.
* `Reflect.ownKeys(obj)`, который возвращает все ключи объекта, включая символьные.
Сборка мусора:
* Сборщик мусора «помечает» (запоминает) все корневые объекты.
* Затем он идёт по их ссылкам и помечает все найденные объекты.
* Затем он идёт по ссылкам помеченных объектов и помечает объекты, на которые есть ссылка от них. Все объекты запоминаются, чтобы в будущем не посещать один и тот же объект дважды.
* …И так далее, пока не будут посещены все ссылки (достижимые от корней).
* Все непомеченные объекты удаляются.
Преобразование к примитивам:
* 3 hint: `number`, `string`, `default(true)`
* ```
obj[Symbol.toPrimitive] = function(hint) {
// должен вернуть примитивное значение
// hint равно чему-то одному из: "string", "number" или "default"
};
```