为什么我不能将空代码块分配给 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};
我正在使用 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};