为什么我不能将空代码块分配给 Javascript 中的变量?

Why can't I assign an empty code block to a variable in Javascript?

我正在使用 V8(通过 Chrome)对此进行测试。在 Javascript 中,代码块的计算结果为代码块中最后一个值的计算结果。我想看看 如果我将一个变量分配给一个空代码块会发生什么。

// example of code block evaluating to last value in the block
> {1;2;3};
3

// This won't work, it returns an empty object,
// not an empty code block.
> var emptyBlock = {};
> emptyBlock;
Object object

最终,我想出了如何指定我想要一个空代码块,而不是一个空对象。

> {;}
undefined

> {;;}
undefined

> {;;;;;}
undefined

好吧,漂亮,所以空代码块解析为 undefined。正确的?

不完全是!

> var emptyBlock = {;}
Uncaught SyntaxError: Unexpected token ';'

?!现在还不清楚空代码块实际上是 returns undefined,还是其他完全在起作用的东西。如果它的计算结果只是 undefined,我们希望上面的赋值能够工作。

有人知道为什么会这样吗?

Eventually, I figured out how to specify that I want an empty code block, not an empty object.

这主要取决于 {之前,而不是在

之后。

因为前面有一个 =,所以您所处的上下文中 { 是对象文字的开始。在需要 属性 名称的地方不允许使用 ;,因此代码错误。

您不能分配块。它们不是值,它们是代码结构的一部分。

Both of these seem demonstrably false. var codeBlockValue = {1;2;3}; for example works perfectly fine, and sets codeBlockValue to 3

不,不是:

var codeBlockValue = {1;2;3};