Вкатываемся в NodeJS Help

Полезный контент

Виды ошибок в js

  1. Syntax Error - синтаксическая ошибка, появляется когда происходит на уровне синтаксиса, то есть незакрытые скобки, пропущенная запятая и тд.

  2. Reference Error - если попытаться обратиться к несуществующей переменной.

  3. Type Error - если обратится к несуществующему свойству.

  4. Range Error - ошибка для значений, которые выходят за диапазон допустимого. new Array(10000000000) // RangeError: Недопустимая длина массива

  5. URI Error - ошибка, которая возникает при неправильном использовании обработки URI.

  6. Eval Error - представляет ошибку, которая возникает в глобальной функции eval()

Примеры use strict

'use strict' включает строгий режим выполнения JavaScript. Эта строка должна располагаться в самом начале скрипта, иначе строгий режим не будет работать. В строгом режиме интерпретатор будет явно выбрасывать ошибки на действия, которые ранее пропускал. Если строгий режим был включён, то отключить его для файла уже нельзя. Примеры - нельзя использовать переменные без объявления, параметры функции не могут иметь одинаковые имена, запрещено использовать зарезервированные слова.

this в use strict -> undefiend;

Var - 2 области видимости

Блочная и глобальная

Всплытие функции

при function declaration <- происходит всплытие, т.е мы можем вызвать функцию выше, чем она объявляется.

Самовызывающая функция !!! + особенности

(function () { // код функции }());

Главной идеей является то, что анонимная функция вызывается сразу после своего объявления. Преимущество от использования самовызывающихся функций вы получите, если нужно выполнить код один раз и сохранить его резульататы во "внешней среде" ( без объявления глобальных переменных).

Named function expression

var f = function sayHi(...) { body }

Особенность в том, что sayHi доступен только внутри тела функции, а за ее пределами - нет.

Arrow functions - arguments, new, super

  • Не имеет собственного объекта Arguments

  • Стрелочные функции не могут быть использованы как конструктор

  • ключевое слово yield не может быть использовано в теле стрелочной функции

  • нет прототипа

Чистая функция

функция, которая не производит никаких лишних и побочных вычислений. Чистая функция — это функция, которая при одинаковых значениях аргументов всегда возвращает одинаковые значения и не имеет наблюдаемых побочных эффектов.

Как перебраить объекты. getOwnPropertyNames

for ... in

getOwnPropertyNames - возвращает массив со всеми свойствами. Если это объект, то возвращает ключи. МетодObject.keys()принимает объект в качестве аргумента и возвращает массив с заданными ключами объекта. МетодObject.values()принимает объект в качестве аргумента и возвращает массив с заданными значениями объекта. МетодObject.entries()принимает объект в качестве аргумента и возвращает массив с массивами, которые являются парами [key, value]данного объекта.

Копирование глубокое через рекурсию, strucredClone

В JavaScript есть функция**structuredClone()**для глубокого копирования массивов или объектов. Либо же написать свою рекурсивную функцию копирования Либо же использовать бибилиотеку lodash

С чем не работате json stringify

undefiend, функция, symbol - при вызове json stringify получаем undefiend

Методы мутирования массивов slice - splice +

splice - принимает 2 параметра, где мы указываем индексы элементов, по которым хотим обрезать и удалить лишнее slice - принимает 2 агрумента, в который копирует элементы в диапазоне, который мы укажем. concat - принимает аргументы и конкатенирует их изменяя оригинальный массив

split('')

такой сплит даст результат через ,

3 способа преобрахования строки в массив

через split() через rest оператор [...'Hello'] Array.from()

Псевдомассив <- нет методов массива

Когда мы посмотрим в свойства массива, то увидим, что он наследует прототипArrayобъекта. То есть, все свойства, которые есть в объектеArray.prototypeбудут доступны для любого массива. Если же посмотреть в свойства какого-либо псевдомассива, то можно заметить, что он наследует прототип другого объекта вместе с другими свойствами.

Weakmap weakset

Map – коллекция для хранения записей видаключ:значение. Set – коллекция для хранения множества значений, причём каждое значение может встречаться лишь один раз. WeakSet – особый видSet, не препятствующий сборщику мусора удалять свои элементы. То же самое – WeakMapдляMap.

То есть, если некий объект присутствует только вWeakSet/WeakMap – он удаляется из памяти.

Spred rest операторы

  • Если...располагается в конце списка параметров функции, то это «остаточные параметры». Он собирает остальные неуказанные аргументы и делает из них массив.

  • Если...встретился в вызове функции или где-либо ещё, то это «оператор расширения». Он извлекает элементы из массива.

.bind(задачи на много биндов, что вызывается только 1 который привязывается) .call .apply

.seal .preventex .freeze

seal - невозможно добавить и удалить preventExtension - невозможно добавить freeze - невозможно добавить, удалить и изменить свойства

Конец цепочки прототипов - null

proto и Prototype методы

__proto__ - есть у всех объектов. почти всегда proto - это объект. Если объекты одного и того же типа, например, 2 массива или 2 объекта, то их __proto__ будут равны. __proto__ любого объекта ссылается на prototype класса с помощью которой этот объект был создан. Prototype - любой класс или любой Function имеет prototype. Прототипы это независимые объекты и они сами по себе

Состояния промисов

  • pending

  • fullfield

  • reject

.race .any .allSettled

  • Promise.allзавершается с ошибкой, если она возникает в любом из переданных промисов.

  • МетодPromise.allSettledвсегда ждёт завершения всех промисов. В массиве результатов будет

    • {status:"fulfilled", value:результат}для успешных завершений,

    • {status:"rejected", reason:ошибка}для ошибок.

  • Promise.race ждет только 1 выполненый промис, остальные игнорируются

  • Promise.any ждет только 1 успешно выполненный промис

Event loop js ()

Event Loop - это специальный механизм на уровне движка js, который координирует работу трёх сущностей: Call Stack ( стэк вызовов), Web API (API, предоставляемый браузером), Callback Queue (очередь колбэков).

Re export

обычный экспорт в {}, так же можно использовать as что бы явно задать или изменить имя

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

Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не какf(a, b, c), а как f(a)(b)(c).

function foo() { const x = 10; return { x: 20, bar: () => { console.log(this.x); }, baz: function() { console.log(this.x) } }; } // global -> obj1 { x...} const obj1 = foo(); obj1.bar(); // undefiend obj1.baz(); // 20 // global -> { x: 30 } -> { x: 20, bar:..., baz: ...} / y / z const obj2 = foo.call({ x: 30 }); let y = obj2.bar; // y = () => { console.log(this.x); } // потеря контекста let z = obj2.baz; // z = function () {console.log(this.x)} y(); // 30 z(); // undefiend obj2.bar(); // 30 obj2.baz(); // 20
Promise .reject('a') .catch(p => p + 'b') .catch(p => p + 'c') .then(p => p + 'd') .then(p => p + 'f') .finally(p => p + 'e') .then(p => console.log(p))
Last modified: 10 July 2025