ECMAScript | Абстрактное Замыкание | Тип спецификации

ECMAScript | Абстрактное Замыкание | Тип спецификации

Тип спецификации Абстрактное Замыкание (Abstract Closure) используется для ссылки на шаги алгоритма вместе с коллекцией значений. Абстрактные замыкания — это мета-значения, которые вызываются с использованием стиля приложения-функции, такого как closure(arg1, arg2). Подобно Абстрактным Операциям, вызовы выполняют шаги алгоритма, описанные Абстрактным Замыканием.

 

На этапах алгоритма, которые создают Абстрактное Замыкание, значения фиксируются с помощью глагола «захват», за которым следует список псевдонимов. Когда создаётся Абстрактное Замыкание, оно фиксирует значение, связанное с каждым псевдонимом в то время. На этапах, которые определяют алгоритм, который должен выполняться при вызове Абстрактного Замыкания, каждое захваченное значение ссылается на псевдоним, который использовался для захвата значения.

Если Абстрактное Замыкание возвращает Запись о Завершении, то поле [[Type]] этой Записи о Завершении должно быть либо normal, либо throw.

Абстрактные Замыкания создаются встроенными как часть других алгоритмов, показанных в следующем примере.

1. Пусть слагаемое addend будет 41.
2. Пусть замыкание closure будет новым Абстрактным Замыканием с параметрами (x), которое захватывает слагаемое addend и при вызове выполняет следующие шаги:
   а. Вернуть x + addend.
3. Пусть val будет closure(1).
4. Утверждено: val равно 42.

 

Информационные ссылки

Стандарт ECMAScript — Раздел «6.2.7 The Abstract Closure Specification Type» — https://tc39.es/ecma262/#sec-abstract-closure