我正在使用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
Run Code Online (Sandbox Code Playgroud)
最终,我弄清楚了如何指定我想要一个空的代码块,而不是一个空的对象。
> {;}
undefined
> {;;}
undefined
> {;;;;;}
undefined
Run Code Online (Sandbox Code Playgroud)
好吧,很漂亮,所以一个空的代码块解析为undefined。对?
> var emptyBlock = {;}
Uncaught SyntaxError: Unexpected token ';'
Run Code Online (Sandbox Code Playgroud)
?!现在还不清楚空代码块是否实际上返回了undefined,或者其他的东西正在起作用。如果仅对进行评估undefined,则我们希望以上分配能够正常工作。
有人知道为什么会这样吗?
最终,我弄清楚了如何指定我想要一个空的代码块,而不是一个空的对象。
这主要取决于之前的内容{,而不是之后的内容。
由于=之前有一个前缀,因此您所处的上下文{是对象文字的开始。;如果需要使用属性名称,则不允许使用A ,因此代码错误。
您不能分配块。它们不是值,它们是代码结构的一部分。
这两个似乎都证明是错误的。var codeBlockValue = {1; 2; 3}; 例如工作得很好,并将codeBlockValue设置为3
不,不是:
var codeBlockValue = {1;2;3}; Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
55 次 |
| 最近记录: |