根据 ECMAScript,带有参数的函数调用是否有效的左侧表达式

根据 ECMAScript ,带有参数的函数调用是有效的左侧表达式吗?

LeftHandSideExpression[Yield, Await] :

      NewExpression[?Yield, ?Await]

      CallExpression[?Yield, ?Await]

      OptionalExpression[?Yield, ?Await]

如果我们更深入地了解CallExpression,我们可以在下面看到如下内容non-terminal CallExpression

CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]

这是否意味着写类似的东西:


alert('Hello') = 1;

已验证。如果你运行上面的代码,你会看到函数调用发生在ReferenceError: Invalid left-hand side in assignment给出之前



慕虎7371278
浏览 95回答 1
1回答

撒科打诨

这是一个很好的问题,LeftHandSideExpression可能不是该作品的理想名称;即使可能没有右手边也可以使用它。:-)稍后在规范中,当确定分配的目标是否有效时,规范会检查表达式的AssignmentTargetType(此处)。如果该类型不是simple,则分配无效。CallExpression 参数(例如)和其他一些参数( 等)的AssignmentTargetType是(此处)。所以你不能分配给.alert('Hello')super()invalidalert('Hello')
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript