@ 在 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 是 Flash 虚拟机中使用的 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”。