【问题标题】:What does @ do in JavaScript?@ 在 JavaScript 中做了什么?
【发布时间】:2011-07-24 19:25:10
【问题描述】:

我尝试过到处搜索,甚至通读了一些 ECMA 规范,但我终其一生都找不到任何东西来解释 at 符号 (@) 在 JavaScript 中的作用。有谁能帮我理解一下这个小家伙吗?

我正在阅读的文档:http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf

感谢您的帮助。

【问题讨论】:

  • 在什么情况下?

标签: javascript


【解决方案1】:

您不会在 ECMA-262 中找到它。你想要ECMA-357

§ 11.1.1 属性标识符

AttributeIdentifier 用于标识 XML 属性的名称。它评估为AttributeName 类型的值。前面的“@”字符将 XML 属性与同名的 XML 元素区分开来。选择此 AttributeIdentifier 语法是为了与熟悉的 XPath 语法保持一致。

【讨论】:

  • 真诚感谢您的及时回复。
【解决方案2】:

@ 在 ECMA262 中不做任何事情。该文档将其用作使用相同语法的不同运算符的占位符。例如,它们描述了诸如foo @= bar 之类的复合赋值,而不是指示所有复合赋值运算符。

复合赋值操作符就是x += 1之类的操作符,不过数量比较多,所以在手册中只用@符号来象征性地表示它们,代码中没有。

正如 Eli Gray 所指出的,这是 EcmaScript for XML 中存在的一项功能,通常昵称为 E4X,正式名称为 ECMA-357。

重要的是要注意,E4X 支持目前并非在所有地方都普遍存在,也不是真正适合“开放网络”的标准,正如 WikiPedia 文章所述:

E4X 受 Mozilla 的 Rhino 支持,用于 OpenOffice.org 和其他几个项目,以及 SpiderMonkey,用于 Firefox 、Thunderbird 和其他基于 XUL 的应用程序。 它还得到 Tamarin 的支持,Tamarin 是 Fl​​ash 虚拟机中使用的 JavaScript 引擎。 Nitro (Safari)、V8 (Google Chrome)、Opera不支持 Internet Explorer.1

来自页面上的 E4X 示例,

您可以为变量分配一些 XML 数据(就像我们可以使用 JSON 语法分配对象一样)

var sales = <sales vendor="John">
    <item type="peas" price="4" quantity="6"/>
    <item type="carrot" price="3" quantity="10"/>
    <item type="chips" price="5" quantity="3"/>
  </sales>;

然后,获取一个属性值,比如“vendor”的值,我们可以这样做

alert( sales.@vendor );

然后在警告框中取回“John”。

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 2013-04-09
    • 2011-10-21
    • 2012-02-26
    相关资源
    最近更新 更多