Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';我给Javascript中的变量分配一个空代码块吗?_Javascript_V8 - Fatal编程技术网

为什么可以';我给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. >

我正在使用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

> {;;}
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,但该代码是一个语法错误;它没有将变量设置为任何值。伙计!我完全错过了!!我可以发誓我已经尝试过了。哇,谢谢大家!