我在David Shariff's JavaScript quiz上看到了这段代码,并且感到惊讶的是它没有语法错误:
var bar = 1,
foo = {};
foo: {
bar: 2;
baz: ++bar;
};
foo.baz + foo.bar + bar;
如何在这样的任何对象之外使用name: value
语法?
答案 0 :(得分:2)
这不是name: value
;这是label: statement
。点击MDN了解更多信息。此代码等同于:
var bar = 1,
foo = {};
{
2;
++bar;
};
foo.baz + foo.bar + bar;
答案 1 :(得分:1)
在这种情况下,foo:
是label。它在这种情况下不是很有用,因为没有任何附近的循环,但它是有效的语法。
请注意,foo:
标签未以任何方式与foo
变量相关联。直接在标签后面的结构只是一个块,奇怪地包含另外两个标签:bar:
和baz:
,后面跟着两个同样简单的语句。
因此,foo
对象仍为空,并且您的最后一行不会按预期方式运行。最后一行的结果,也就是测验问题的答案,是
NaN