Тип спецификации Абстрактное Замыкание (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