Обертывание всего блока кода JS в {} в ES6 - PullRequest
0 голосов
/ 04 декабря 2018

Какой смысл заключать весь блок кода в две фигурные скобки?Например, в файле .js:

{    
const firstVar;

class firstClass {}

class secondClass {}    
}

Это для создания блочной области и поддержания чистоты глобального пространства имен?Сравнимо ли это с обертыванием всего модуля javascript, например, в самозапускающуюся функцию?

Взгляните на этот файл JS, например;

https://github.com/codrops/PageFlipLayout/blob/master/js/demo.js

1 Ответ

0 голосов
/ 04 декабря 2018

Да, это очень похоже на старую практику создания IIFE для изоляции ваших переменных от глобальной области видимости.

Поскольку const и let имеют значение block область действия,в отличие от лексической (или функции) области действия, вам не нужно создавать целую функцию и вызывать ее.Достаточно просто обернуть его в блок.

{
  const foo = 42;
  console.log(foo); // 42
}
console.log(foo); // ReferenceError

Стоит отметить, что эта практика все еще используется (и менее эффективна), чем IIFE, поскольку IIFE также защищает вас от утечки var s иfunction объявлений, которых не будет блок.Хотя сегодня наиболее распространенным вариантом использования является использование модуля, который неявно предотвращал бы утечку переменных и объектов в глобальную область.

Только let, const и class имеют область видимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...