让我们看一下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)
都包含相同的内容。这有什么意义?它们有什么不同?
答案 0 :(得分:1)
重点是它们出现在不同的上下文中,并且具有与之相关的不同算法。
IdentifierReference
是在表达式中使用的变量名称,使用ResolveBinding对参考进行评估BindingIdentifier
是一个变量名,用于创建绑定 - 在变量和函数声明中,在参数中,在解构中,在catch
子句中,在for
子句中等等在他们的EarlyErrors中,IdentifierReference
可能会引用eval
或argument
,但BindingIdentifier
为他们创建绑定是语法错误(在严格模式)。他们共享的唯一算法是StringValue。 IdentifierReference
有IsValidSimpleAssignmentTarget个支票和Evaluation,BindingIdentifier
有} BoundNames和BindingInitialisation程序。