Skip to content

Latest commit

 

History

History
61 lines (52 loc) · 3.98 KB

JavaScript.md

File metadata and controls

61 lines (52 loc) · 3.98 KB

Типы:

* number для любых чисел: целочисленных или чисел с плавающей точкой; целочисленные значения ограничены диапазоном ±(253-1). * bigint для целых чисел произвольной длины. * boolean для true/false. * string для строк. Строка может содержать ноль или больше символов, нет отдельного символьного типа. * null для неизвестных значений – отдельный тип, имеющий одно значение null. (Для null возвращается "object" – это ошибка в языке, на самом деле это не объект) * undefined для неприсвоенных значений – отдельный тип, имеющий одно значение undefined. * object для более сложных структур данных. * symbol для уникальных идентификаторов.

Сравнения:

* `alert( null === undefined ); // false` * ``` alert( null > 0 ); // (1) false alert( null == 0 ); // (2) false alert( null >= 0 ); // (3) true ``` * ``` alert( undefined > 0 ); // false (1) alert( undefined < 0 ); // false (2) alert( undefined == 0 ); // false (3) ``` * `null` равен только `undefined` и наоборот * `0 === -0 // true`, но `Object.is(0, -0) //false`

Области видимости:

* Глобальная - window * Функциональная * Блочная

Функции:

* Если функция объявлена как отдельная инструкция в основном потоке кода, то это 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" }; ```

Call, bind, apply:

Каррирование:

https://learn.javascript.ru/currying-partials