Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/410.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 根据ECMAScript,带有参数的函数调用是否是有效的左侧表达式_Javascript_Function_Arguments_Function Call - Fatal编程技术网

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

Javascript 根据ECMAScript,带有参数的函数调用是否是有效的左侧表达式,javascript,function,arguments,function-call,Javascript,Function,Arguments,Function Call,根据ECMAScript,带参数的函数调用是否有效 LeftHandSideExpression[Yield, Await] : NewExpression[?Yield, ?Await] CallExpression[?Yield, ?Await] OptionalExpression[?Yield, ?Await] 如果我们进一步深入,我们可以看到下面的非终端调用表达式类似这样的内容: CallExpression[?Yield, ?Await] Arg

根据ECMAScript,带参数的函数调用是否有效

LeftHandSideExpression[Yield, Await] :
      NewExpression[?Yield, ?Await]
      CallExpression[?Yield, ?Await]
      OptionalExpression[?Yield, ?Await]
如果我们进一步深入,我们可以看到下面的
非终端调用表达式
类似这样的内容:

CallExpression[?Yield, ?Await] Arguments[?Yield, ?Await]
这是否意味着要写一些类似于:


alert('Hello')=1这是一个非常好的问题,LeftHandSideExpression可能不是该产品的理想名称;即使可能没有右侧,也会使用它。:-)


在规范的后面,当确定赋值的目标是否有效时,规范会检查表达式()的AssignmentTargetType。如果该类型不是简单的
,则赋值无效。CallExpression参数(例如,
alert('Hello')
)和其他一些(
super()
)的AssignmentTargetType是
无效的
()。因此,您不能分配给
alert('Hello')

FWIW,这可能很有用:(但它不能回答这个问题)。那么您知道:
CallExpression[?Yield,?wait]参数[?Yield,?wait]
的意思吗。好的@T.J.Crowder非常感谢你。但是你能解释一下这两者之间的关系吗:
12.15.3静态语义:AssignmentTargetType AssignmentExpression:YieldExpression ArrowFunction AsyncArrowFunction LeftHandSideExpression=AssignmentExpression LeftHandSideExpression AssignmentOperator AssignmentExpression
和我的问题。我看到,如果
赋值表达式的
左侧
出现了那些
非终端
,则返回
无效
(注意:这就是我理解的方式,可能完全不同,我错了)
但是
调用表达式
不存在。@Kevin-你的
警报('Hello'))=1
是赋值表达式。作为确定该赋值表达式是否有效的一部分,需要检查(
alert('Hello')
)左侧的AssignmentTargetType是否为
simple
。它没有,因为
alert('Hello')
是CallExpression参数,其赋值targetType为
无效。因此赋值表达式无效。
simple
assignmentTargetType
是什么意思?@Kevin-我认为这是对LeftHandSide表达式进行分类的一种方法。