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

Как семантика функций блочного уровня ES6 отличается в строгом и нестрогом режимах и как на них влияют веб-расширения?

Опубликовано 22 декабря 2024 г.
Просматривать:782

How Do ES6 Block-Level Function Semantics Differ in Strict and Non-Strict Modes, and How Do Web Extensions Affect Them?

Понимание семантики функций уровня блока ES6

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

Семантика
В таблице ниже приведены Ключевые аспекты семантики функций на уровне блоков:

Выполнение Окружающая средаВидимый внешний блокПоднят на вершину блокаTDZ
Нестрогое, нет веб-расширенийДа, например varДаНет
Строго, никаких веб-расширенийНетДаНет
Нестрогий, Интернет расширенияДа, например varДаНет
Строго, веб-расширенияНетДа, дважды (функция и блок)Привязка на уровне функции ранее не определена декларация

Последствия строгого режима
Понятие «строгий режим» в этом контексте относится к внутреннему слоту [[Strict]] объект функции, а не строгость самой функции. Таким образом, фрагмент кода, включающий объявление функции с «use strict» в нестрогом окружающем коде, по-прежнему считается «нестрогим».

Веб-расширения
Расширения» применяются только к нестрогим (неряшливым) кодам с «разумным» внешним видом функциональных операторов. В небрежном режиме с семантикой веб-совместимости объявление функции внутри блока обрабатывается следующим образом:

  1. Объявление функции поднимается в начало лексического блока.
  2. Объявление var поднимается во включающую функцию, инициализируемую значением undef.
  3. Когда объявление функции оценивается, объект функции присваивается области действия функции переменная.

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

Заключение
Хотя функции уровня блока в ES6 предлагают расширенную функциональность, понимание их точной семантики, включая взаимодействие между строгими режимами и веб-совместимостью, имеет решающее значение для обеспечения правильного использования и предотвращения потенциальных подводные камни.

Последний учебник Более>

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

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

Copyright© 2022 湘ICP备2022001581号-3