Разница между VarDeclaredNames и VarScopedDeclarations

Вопрос не в том, что содержат эти сущности. Вопрос в плане их использования. Т.е. какой смысл от VarDeclaredNames, если в VarScopeDeclarations содержится и имена (хотя бы можно извлечь) (То же касается LexicallyDeclaredNames, LexicallyScopeDeclarations)

Например

  1. http://www.ecma-international.org/ecma-262/#sec-functiondeclarationinstantiation
    • Имеет VarDeclaredNames, LexicallyDeclaredNames, VarScopeDeclarations, LexicallyScopeDeclarations
  2. http://www.ecma-international.org/ecma-262/#sec-globaldeclarationinstantiation
    • Имеет VarDeclaredNames, LexicallyDeclaredNames, VarScopeDeclarations, LexicallyScopeDeclarations
  3. http://www.ecma-international.org/ecma-262/#sec-moduledeclarationinstantiation
    • Имеет VarScopeDeclarations, LexicallyScopeDeclarations
  4. http://www.ecma-international.org/ecma-262/#sec-blockdeclarationinstantiation
    • Имеет LexicallyScopeDeclarations
  5. http://www.ecma-international.org/ecma-262/#sec-evaldeclarationinstantiation
    • Имеет VarDeclaredNames, VarScopeDeclarations, LexicallyScopeDeclarations

Что вы имеете в виду под "какой смысл от VarDeclaredNames, если в VarScopeDeclarations содержится и имена"?

a better oliver 23.05.2018 15:08

@zeroflag Ну: VarScopeДекларации (список) - function a (){/*code*/}, var c = 10 VarDeclaredNames (список) -"a","c"

MaximPro 23.05.2018 15:12

Хорошо, но вопрос был в том, что означает предложение? И если вы знаете разницу, то каков ваш настоящий вопрос?

a better oliver 23.05.2018 15:16

@zeroflagL Вопрос в плане их использования Зачем в спецификации используются VarDeclaredNames, если VarScopeDeclarations содержит информации намного больше и в алгоритмах спецификации это видно. Посмотрите GlobalDeclarationInstatiation, где VarScopeDeclarations используется для создания привязок (для извлечения имен)

MaximPro 23.05.2018 15:23

Так проще. Если вам нужно работать с именами, вы можете сделать это напрямую.

a better oliver 23.05.2018 16:16

@zeroflagL Правда? Я про это и спрашиваю! Зачем использовать такие имена, как VarDeclaredNames? Я уже говорил, что имена можно получить из VarScopeDeclarations (что и сделано в спецификации). Тогда в чем смысл? При необходимости могу указать места.

MaximPro 23.05.2018 16:32

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

loganfsmyth 23.05.2018 18:37

Если для задачи требуются только имена, извлекать имена из большего списка неэффективно. В этом случае более эффективно иметь список только с заранее извлеченными именами.

user4639281 23.05.2018 22:31

@TinyGiant Если вы говорите, что лучше использовать список имен заранее, так как меньше времени на извлечение, то почему список имен не везде используется, но есть места, где используется список объявлений, из которых извлекаются имена ?

MaximPro 24.05.2018 08:32

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

user4639281 24.05.2018 17:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
10
212
0

Другие вопросы по теме