为什么不能将空代码块分配给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 ';'

?!现在还不清楚空代码块是否实际上返回了undefined,或者其他什么完全在起作用。如果仅对进行评估undefined,则我们希望上述分配能够正常工作。

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

昆汀

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

这主要取决于之前的内容{,而不是之后的内容。

由于=之前有一个前缀,因此您所处的上下文{是对象文字的开始。;如果需要使用属性名称,则不允许使用A ,因此代码错误。

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

这两个似乎都证明是错误的。var codeBlockValue = {1; 2; 3}; 例如工作得很好,并将codeBlockValue设置为3

不,不是:

var codeBlockValue = {1;2;3}; 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么在 Swift 中不能将 Int32 变量分配给 Int64 变量,反之亦然?

为什么不能将匿名方法分配给var?

为什么不能将项目分配给对象的常量?

为什么不能将背景颜色分配给视图

为什么不能将* Struct分配给* Interface?

为什么不能将lambda分配给Object?

为什么不能将数组的地址分配给指针?

为什么不能将方法引用直接分配给Object类型的变量?

为什么不能将Nothing分配给Unit类型的变量?

为什么我不能将wordpress函数分配给变量?

为什么不能将字符串变量分配给 json::value 对象?

为什么不能将函数引用分配给匹配变量?E2555被举起

为什么不能将`push`函数分配给变量?

在IntelliJ中,为什么不能将键映射分配给“最近打开”

为什么我不能将 FS 寄存器的 PID 块的值分配给一个 unsigned int?

为什么我们不能将 lambda 表达式直接分配给 Object 类型的引用变量?

为什么不能直接将此值分配给变量?

为什么不能将类型SFC <AnchorProps>分配给类型SFC <{}>?

为什么不能将函数分配给Object.prototype.click?

为什么不能将道具分配给常量并渲染它

为什么不能将子类型值分配给泛型类型?

为什么不能将BlockingCollection <T>分配给IReadOnlyCollection <T>?

为什么不能将 std::bind 的结果分配给函数指针

为什么不能将正确结构的Typescript数组分配给看似兼容的元组

为什么不能将结构分配给具有其实现特征的绑定

为什么不能将工作项分配给团队成员?

为什么不能将基类对象分配给派生类对象?

为什么我不能将 new 创建的 &client 对象分配给 unique_ptr

为什么不能将此DataGridViewComboBoxCell分配给我想要的单元格?