【发布时间】:2019-03-04 20:25:11
【问题描述】:
我正在使用 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 ';'
?!现在还不清楚空代码块是否真的返回undefined,或者其他完全在起作用。如果它只是评估为undefined,我们希望上述分配有效。
有人知道为什么会这样吗?
【问题讨论】:
-
“空代码块”根本不是可以分配的值。你当然可以做一个函数。
-
实际目标是什么???
-
@Pointy 我在想,由于代码块评估为代码块中最后一个表达式的评估结果,并且一个空代码块似乎评估为未定义(这本身似乎很直观),它应该能够以这种方式存储在变量中
-
@epascarello 有趣和好奇
-
您将 控制台 的操作与 JavaScript 代码的实际工作方式混淆了。
{在需要表达式时开始一个对象字面量,当它是语句中的第一个标记时它开始一个代码块。
标签: javascript v8