2012-07-31 56 views
0

如果我写在Javascript:JavaScript属性与标签?

var o= { aaa :s }; 

他怎么知道distiguish

1)命名标签aaa

之间 enter image description here

2)属性命名aaa(恕我直言,性能可以使用而不使用"

+0

因为您可能只使用带有循环的标签 – Serjio 2012-07-31 12:41:09

+0

@Serjio - 事实并非如此。它只会让*意识到做到这一点,但标签在很多地方都是允许的。因此,'onclick =“javascript:foo()”'的头脑疯狂。 – Quentin 2012-07-31 12:43:55

+0

您的代码在所有浏览器中都不起作用。因为'javascript:'就像协议记号不是标签 – Serjio 2012-07-31 12:46:18

回答

0

简而言之:

  • 一个属性(这样的)可以在对象常量才会出现。
  • 标签不能出现在对象文字中。

...和JavaScript解析器知道它在代码中的任何给定点解析什么。

当你有(例如)一个函数作为一个属性的值时,它会变得更复杂一些,但它基本上归结为解析模式。在这一点上,被分析的东西堆栈顶部会有一个函数,而它下面有一个对象文字。在函数完成之前,对象字面解析不会再次变为“活动”。

HTML 5 specification提供了一个如何解析HTML的详细示例。 JavaScript的原则基本相同。

+0

好。那么'{blah:alert(123)}'是一个对象符号还是一个带有标签的块?=) – Serjio 2012-07-31 12:43:23

+0

对象字面量。 – 2012-07-31 12:43:59

+0

@Serjio - 取决于上下文。 '{'指在某些地方“启动对象文字”,在其他地方启动“块”。它的工作方式与决定某物是标签还是物业相同。 – Quentin 2012-07-31 12:44:55