«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Объяснение подъема JavaScript для улучшения ваших навыков кодирования

Объяснение подъема JavaScript для улучшения ваших навыков кодирования

Опубликовано 3 ноября 2024 г.
Просматривать:454

JavaScript Hoisting Explained to Improve Your Coding Skills

JavaScript — это язык, поведение которого часто может сбить с толку новичков. Одним из таких вариантов поведения является поднятие, концепция, которую должен понимать каждый разработчик JavaScript, чтобы писать более предсказуемый код. В этой статье мы рассмотрим, что такое подъем, как он работает с переменными и функциями и как можно избежать связанных с ним ловушек.

Что такое подъем?

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

Пример:

console.log(myVar); // undefined
var myVar = 5;

В этом примере вы можете ожидать ошибку ReferenceError, поскольку myVar используется до ее объявления. Однако из-за подъема на самом деле происходит то, что объявление var myVar перемещается в верхнюю часть области видимости, а назначение (myVar = 5) остается на месте. Внутренне JavaScript интерпретирует это как:

var myVar;
console.log(myVar); // undefined
myVar = 5;

Из-за этого myVar определен, но еще не назначен при запуске console.log, поэтому он выводит неопределенное значение.

Подъем и переменные

Давайте разберем, как работает подъем с различными типами переменных: var, let и const.

1. вар Подъем

При использовании var поднимаются и объявление, и переменная. Однако перемещается только объявление, а не присвоение.

console.log(a); // undefined
var a = 10;

Объявление var a поднимается, но присвоение происходит позже, поэтому при регистрации a не определена.

2. let и const Подъем

Переменные, объявленные с помощью let и const, также поднимаются, но они не инициализируются как неопределенные, как var. Вместо этого они входят в Временную мертвую зону (TDZ) от начала своей области действия до тех пор, пока не встретится объявление.

console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 20;

Здесь b поднимается, но он недоступен до тех пор, пока не будет выполнена фактическая строка объявления, что приводит к ошибке ReferenceError.

То же самое поведение применимо и к const, с дополнительным правилом, согласно которому константные переменные должны быть инициализированы во время объявления.

Подъем и функции

Объявления функций полностью поднимаются, то есть имя и тело функции перемещаются в начало области видимости. Это позволяет вам вызывать функции до их объявления.

Пример объявления функции:

greet(); // "Hello, World!"

function greet() {
  console.log("Hello, World!");
}

Здесь объявление функции Greeting полностью поднято, поэтому функцию можно вызвать даже до того, как код достигнет своего определения.

Функциональные выражения и подъем

Однако функциональные выражения не поднимаются таким же образом. Поскольку они рассматриваются как присваивания, поднимается только объявление переменной, а не определение функции.

greet(); // TypeError: greet is not a function

var greet = function() {
  console.log("Hello, World!");
};

В этом случае переменная Greet поднимается, но в процессе поднятия ей присваивается неопределенное значение. Вот почему вызов Greeting() перед назначением выдает ошибку TypeError.

Как избежать ошибок при подъеме

Чтобы избежать путаницы, вызванной подъемом, следуйте этим рекомендациям:

  1. Объявляйте переменные в начале их области действия — хотя при подъеме объявления перемещаются наверх, рекомендуется объявлять их в начале соответствующих областей видимости. Это делает ваш код более читабельным и предсказуемым.

  2. Используйте let и const вместо var — переменные, объявленные с помощью let и const, имеют блочную область видимости, что делает поведение подъема более понятным и менее подверженным ошибкам. Это также снижает вероятность случайного обращения к переменным до их инициализации.

  3. Организуйте объявления функций — объявляйте свои функции перед их использованием, чтобы не полагаться на подъемное поведение.

Заключение

Подъем — одна из многих особенностей JavaScript, но понимание того, как он работает, поможет вам писать более чистый и менее подверженный ошибкам код. Помните, что хотя объявления функций и переменные подняты, они ведут себя по-разному. Придерживайтесь let и const, а не var, и держите свой код хорошо организованным, чтобы избежать сюрпризов.

Помня о подъеме, вы можете сделать свой код JavaScript более предсказуемым и простым в обслуживании.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/byte-sized-news/javascript-hoisting-explained-to-improve-your-coding-skills-37b2?1 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163 .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3