Понимание семантики функций уровня блока ES6
Введение
С появлением ES6 блок Объявления функций уровня стали ценным дополнением к языку. Несмотря на первоначальные предположения, точная семантика этих функций охватывает более широкий спектр, включая различия между строгими и нестрогими режимами и соображения совместимости браузеров.
Семантика
В таблице ниже приведены Ключевые аспекты семантики функций на уровне блоков:
Выполнение Окружающая среда | Видимый внешний блок | Поднят на вершину блока | TDZ |
---|---|---|---|
Нестрогое, нет веб-расширений | Да, например var | Да | Нет |
Строго, никаких веб-расширений | Нет | Да | Нет |
Нестрогий, Интернет расширения | Да, например var | Да | Нет |
Строго, веб-расширения | Нет | Да, дважды (функция и блок) | Привязка на уровне функции ранее не определена декларация |
Последствия строгого режима
Понятие «строгий режим» в этом контексте относится к внутреннему слоту [[Strict]] объект функции, а не строгость самой функции. Таким образом, фрагмент кода, включающий объявление функции с «use strict» в нестрогом окружающем коде, по-прежнему считается «нестрогим».
Веб-расширения
Расширения» применяются только к нестрогим (неряшливым) кодам с «разумным» внешним видом функциональных операторов. В небрежном режиме с семантикой веб-совместимости объявление функции внутри блока обрабатывается следующим образом:
По сути, такое поведение приводит к появлению двух отдельных привязок с одинаковым именем: одна с областью действия блока, а другая с областью действия функции.
Заключение
Хотя функции уровня блока в ES6 предлагают расширенную функциональность, понимание их точной семантики, включая взаимодействие между строгими режимами и веб-совместимостью, имеет решающее значение для обеспечения правильного использования и предотвращения потенциальных подводные камни.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3