JS - однопоточный язык программирования.
Простыми словами это внутренняя функция, т.е. функция в функции. Замыканием (closure) называют потому, что после выполнения родительской или внешней функции, код внутренней все еще "живет" в интерпретаторе, и его можно выполнить. Ошибок не возникнет даже если внутренняя функция (замыкание) будет использовать переменные из внешней функции.
function makeWorker() { let name = "Pete"; return function() { alert(name); }; } let name = "John"; // create a function let work = makeWorker();
Lexical scoping - это видимость переменных из внутреннего метода во внешний.
null == undefined - true
null == 0 - false
По этому рекомендуется использовать сравнения 3 знаков === или !==
Для практики кода, можно использовать вывод в консоль браузера.
console.log()
Можно использовать && и || как проверку на значение(0 или "" или NaN или null - вернет false все остальное
это true)
console.log(1 || 2) //1
console.log(1 && 2) //2
Выведет переданное сообщение в окне alert(?message);
Выведет переданный вопрос, и кнопки ok cancel и вернет boolean ответ confirm(?message);
Выведет переданное сообщение и вернет заполненное поле prompt(?message, ?defaultValue);
Объекты для преобразования типов.
Number() String() Boolean()
Мат функции
Math.min(2,4) Math.max(2,4)
if(условие) { тело(блок) } else if (условие) { тело(блок) } else if (условие) { тело(блок) } else { тело(блок) }
while(условие) { тело(блок) }
do { тело(блок) } while (условие)
let user = { name:'a', surname:'b', patronymic:'c' }
user.name или user['name']
typeof - метод получения типа.
typeof user
... - предоставляет 2 возможности
Оператор расширения - «разбивает» объект на набор его элементов и отдаёт их по порядку.
arr = [1, 2, 3] console.log(...problems)
Можно объединять массивы
[ ...arr, ...left, ...right ]
В параметрах функции можно указать получение нескольких параметров.
function s(...args) {}
await - ключевое слово которым помечают вызовы кода для ожидания завершения Promise. Могут использоваться только в функциях с ключевым словом async.
В JavaScript this является «свободным», его значение вычисляется в момент вызова метода и не зависит от того, где этот метод был объявлен, а скорее от того, какой объект вызывает метод (какой объект стоит «перед точкой»).
Эта концепция вычисления this в момент исполнения имеет как свои плюсы, так и минусы. С одной стороны, функция может быть повторно использована в качестве метода у различных объектов (что повышает гибкость). С другой стороны, большая гибкость увеличивает вероятность ошибок.