为什么可以';我给Javascript中的变量分配一个空代码块吗?
我正在使用V8(通过Chrome)来测试这一点。在Javascript中,代码块的计算结果与代码块中最后一个值的计算结果相同。我想看看如果我给空代码块分配了一个变量会发生什么。为什么可以';我给Javascript中的变量分配一个空代码块吗?,javascript,v8,Javascript,V8,我正在使用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. >
// 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
> {;;}
undefined
> {;;;;;}
undefined
这在很大程度上取决于{
之前的,而不是之后的
由于前面有一个=
,因此您所处的上下文中,{
是对象文字的开头。在需要属性名的地方不允许使用;
,因此代码会出错
不能分配块。它们不是值,而是代码结构的一部分
这两种方法都显然是错误的。例如,var codeBlockValue={1;2;3};工作得非常好,并将codeBlockValue设置为3
不,它没有:
var codeBlockValue={1;2;3};
一个“空代码块”根本不是一个可以赋值的值。你当然可以创建一个函数。实际目标是什么???@Pointy我在想,既然代码块的计算结果是代码块中最后一个表达式的计算结果,那么空代码块的计算结果似乎是未定义的(这本身似乎很直观),它应该能够以这种方式存储在variable@epascarello有趣又好奇你把控制台的操作和JavaScript代码的实际工作方式搞混了。A{
在需要表达式时启动一个对象文字,当它是语句中的第一个标记时,它启动一个代码块。你说=
的存在意味着它将被解释为一个对象文字。然后说你不能分配块。这两个看起来都是明显错误的。var codeBlockValue={1;2;3}
例如,它工作得非常好,将codeBlockValue
设置为3
@seisvelas,但该代码是一个语法错误;它没有将变量设置为任何值。伙计!我完全错过了!!我可以发誓我已经尝试过了。哇,谢谢大家!