javascript - ECMA-262 和 ECMA-357 之间有语法差异吗?

标签 javascript parsing e4x ecma262

我正在编写一个基于 ECMA-262 的 JavaScript 解析器.我很想知道我需要改变多少才能做到这一点 ECMA-357兼容。

有语法差异吗?

最佳答案

有许多语法扩展。最重要的是 XML 文字(请参阅第 11.1.4 和 11.1.5 节):

var foo = <xml>
  foo
</xml>;
var bar = <>
  <tag attr={(1+2).toFixed(2)}/>
  {foo}
</>;

上面的示例显示了空根标记和 XML 代码中的 JavaScript 表达式的特殊情况。

还有一些表达式在 ECMA-262 中无效(请参阅第 11.2 节):

xml.@attr           // get attribute attr
xml.*               // get all child elements
xml.@*              // get all attributes
xml..foo            // get all <foo> tags
xml..foo.(@id == 1) // filter <foo> tags by id attribute

有命名空间(见 11.1.2 节):

xml.soap::foo       // get <foo> child tags with namespace soap
xml.@soap::attr     // get attribute with namespace soap

有一个默认的 XML 命名空间语句,它在语法上是一个非常不寻常的构造(请参阅第 12.1 节):

default xml namespace = new Namespace("http://foo/bar");

最后,还有 for each .. in 循环,它类似于 for .. in(请参阅第 12.3 节):

for each (var foo in xml)
{

}

据我所知,这些是所有语法差异 - 但您可能已经了解得足够多了。

关于javascript - ECMA-262 和 ECMA-357 之间有语法差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9286392/

相关文章:

parsing - 手动解析简单语法

javascript - E4X:如何向现有 E4X 对象添加默认命名空间

javascript - AngularJS,如何使两个输入字段的总和在动态变化时始终等于第三个输入?

javascript - 将值从多个对象推送到数组

javascript - 如何防止滚动顶部在选项卡到隐藏元素时发生变化?

C++ 读取 CSV

java - 使用jsoup逐行读取robot.txt

apache-flex - E4X:在表达式中使用字符串作为属性名称?

xml - 如何让远程对象在 E4X 中返回 XML?

javascript - 包装一个 jquery 函数并返回一个值