JavaScript 中的 @ 是什么意思?

5

6
在什么情况下? - Quentin
2个回答

10

在ECMA-262中不会找到它,你需要查看ECMA-357

§ 11.1.1 属性标识符

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


非常感谢您的及时回复。 - Cranium Slows

3

@在ECMA262中没有实际作用。文档将其用作具有相同语法的不同运算符的占位符。例如,它们描述了复合赋值运算符,如foo @= bar,而不是指示所有复合赋值运算符。

复合赋值运算符是诸如x += 1之类的运算符,但是有很多这样的运算符,因此,在手册中仅使用@符号来象征性地表示它们,而不是在代码中使用。

正如Eli Grey所指出的那样,这是存在于EcmaScript for XML,通常被称为E4X,正式命名为ECMA-357的功能。

需要注意的是,E4X支持目前并不普遍存在,并且并不是最适合“开放网络”的标准,正如维基百科文章所述:

E4X被Mozilla的Rhino支持,用于OpenOffice.org和其他几个项目中,以及SpiderMonkey(用于Firefox、Thunderbird和其他基于XUL的应用程序)。它也被Tamarin支持,该JavaScript引擎用于Flash虚拟机。它不受Nitro(Safari)、V8(Google Chrome)、Opera或Internet Explorer的支持。从页面上的E4X示例可以看出,您可以将一些XML数据分配给一个变量(以与使用JSON语法分配对象的方式相同)。1
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”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接