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

Ссылка на вопрос: https://www.linkedin.com/posts/piyalidas10_javascript-fatarrow-functions-activity-6564410214240620544-Ay8w/

Честно говоря, я очень смущен, почему люди приносят эту проблему с помощью «функций стрелок» или термина «функции жирных стрелок». Это нормальное поведение JavaScript, и оно не зависит от версий ES, будь то ES5, 6 или выше. Что ж, помимо всего прочего, позвольте мне попытаться объяснить, каков мой многолетний опыт работы с JavaScript.

давайте рассмотрим простой сценарий, чтобы понять, что такое «подъем» и какова природа выполнения кода в Javascript. Javascript переносит все переменные в верхнюю часть текущей области. На самом деле это не присваивание, а инициализация переменной.

Теперь подумайте над случаями 1 и 2. Консоли случая 1 «не определены», однако консоли случая 2 «функционируют». Теперь люди могут задаться вопросом, почему это происходит. В соответствии с этим либо оба должны были быть напечатаны с соответствующими типами, либо они должны были выдать «undefined». Но этого не произошло. На самом деле произошло другое: правило выполнения кода Javascript. Случай 1 фактически поднимает имя переменной наверх, но не берет с ним значение, происходит подъем. С другой стороны, Javascript анализирует все функции в начале выполнения кода. Итак, технически, прежде чем печатать тип «город», он знает, что это функция.

Надеюсь, это поможет всем нам.