代码之家  ›  专栏  ›  技术社区  ›  MaximPro

bindingIdentifier和identifierReference有什么区别

  •  0
  • MaximPro  · 技术社区  · 8 年前

    让我们看看 http://www.ecma-international.org/ecma-262/#sec-expressions

    如你所见:

    IdentifierReference[Yield, Await]:
        Identifier
        [~Yield]yield
        [~Await]await
    
    BindingIdentifier[Yield, Await]:
        Identifier
        [~Yield]yield
        [~Await]await
    
    Identifier:
        IdentifierName but not ReservedWord
    

    两个 Identifiers (Binding and Reference) 包含相同的内容。这有什么意义?它们有什么不同?

    1 回复  |  直到 8 年前
        1
  •  1
  •   Bergi    8 年前

    重点是它们发生在不同的环境中,并且有不同的相关算法。

    • IdentifierReference 是表达式中使用的变量名,使用 ResolveBinding 参考
    • BindingIdentifier 是一个变量名,用于在变量和函数声明、参数、析构函数和 catch 条款,in for 条款等。

    在他们的 EarlyErrors 标识符引用 可参考 eval argument ,但A 绑定标识符 为它们创建绑定是一个语法错误(在严格模式下)。他们共享的唯一算法是 StringValue . 安 标识符引用 有一个 IsValidSimpleAssignmentTarget 支票和 Evaluation ,而a 绑定标识符 BoundNames 和A BindingInitialisation 程序。