为什么"var"关键字不能与逗号运算符一起使用?

Psd*_*ddp 0 javascript

以下spinet是有效的JS:

var foo;
if (foo = true, foo) {
}
Run Code Online (Sandbox Code Playgroud)

但这个不是:

if ((var foo = true), foo) {
}
Run Code Online (Sandbox Code Playgroud)

为什么?

Ori*_*iol 5

那是因为

foo = true
Run Code Online (Sandbox Code Playgroud)

是一个AssignmentExpression,它是一个Expression,所以你可以将它包装在ParenthesizedExpression中:

ParenthesizedExpression[Yield]:
    (Expression[In, ?Yield])
Run Code Online (Sandbox Code Playgroud)

var foo = true
Run Code Online (Sandbox Code Playgroud)

是一个VariableStatement,它是一个Statement,而不是一个Expression.