как называется глобальный объект в разных окружениях:
браузер —
браузер —
window
нода — global
веб-воркер — self
скоро это всё должно замениться на кроссокруженческий globalThisA function declaration is hoisted and initialized to its function value (again, called function hoisting). A var variable is also hoisted, and then auto-initialized to undefined
сначала всплывают function declaration, а потом переменные, объявленные через var
So to summarize, TDZ errors occur because let/const declarations do hoist their declarations to the top of their scopes, but unlike var, they defer the auto-initialization of their variables until the moment in the code's sequencing where the original declaration appeared. This window of time (hint: temporal), whatever its length, is the TDZ.
commonjs modules сейчас остались только в ноде, в основном мы используем esm модули
But alas, that's not how it landed.
let has a TDZ because const needs a TDZ, because let and const mimic var in their hoisting to the top of the (block) scope. There ya go. Too circular? Read it again a few times.
code_notes
откуда берется this
эти правила на работают для стрелочных функций. стрелочные функции берут this из внешней функции (или из глобальной области видимости)
всё что нужно знать про this в четырех абзацах
https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/this%20%26%20object%20prototypes/ch2.md#review-tldr
https://github.com/getify/You-Dont-Know-JS/blob/1st-ed/this%20%26%20object%20prototypes/ch2.md#review-tldr
GitHub
You-Dont-Know-JS/this & object prototypes/ch2.md at 1st-ed · getify/You-Dont-Know-JS
A book series (2 published editions) on the JS language. - getify/You-Dont-Know-JS