2016-11-10 71 views
-8

,熟悉对象字面看下面的代码我猜的最后一行会后,“2 + 2 + 2 = 6”,但是当铬控制台执行,我得到了“南”作为结果。起初,我没有认出第4行的foo后面的“:”和第5行和第6行的栏旁边的分号。为了找出原因,我想“富:{吧:10}”,然后将其打印10。然后我才知道,语法是错误的,但不明白为什么它没有抛出一个错误,而是得到了一个答案10.为什么foo:{bar:10}在chrome控制台中执行时打印10个| JavaScript的

var bar = 1, 
 
    foo = {}; 
 

 
foo: { 
 
    bar: 2; 
 
    baz: ++bar; 
 
}; 
 
foo.baz + foo.bar + bar;

+2

什么一段代码? – rorschach

+0

我们可以使用一些更多的细节。代码如何运行?你能提供一个片段来重现这个问题吗?就目前而言,这个问题是无法回答的。 – Cerbrus

+0

我们能获得更多细节吗?代码,您正在运行它的环境? – DiegoRBaquero

回答

4

foo:label。它没有做任何事情,因为它没有标注任何有用的东西

{}block。它对一些陈述进行分组,但是(在这个例子中)没有很大的意义。 (重要说明:这是一个,不是对象字面值。)

bar:是另一个标签。同上foo:

10是一个数字。

由于其他一切都没有意义,所以您基本上正在评估10,因此您得到10作为结果。

+0

感谢您的快速响应,但JS中的标签是什么。可能对你听起来很愚蠢。你的意思是这只是一些字符串?如果是这样,为什么它不打印 –

+0

@ankamsarav - 标签在我把答案放在链接的另一端详细描述。它们主要用于打破嵌套循环。 – Quentin

+0

谢谢@Quentin,这有助于。喜欢你打破解释的方式。这是我的坏立即跳转:) –

相关问题