javascript – ECMA-262和ECMA-357之间是否存在语法差异?
作者:互联网
我正在编写一个基于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");
最后,每个.. in循环都有类似于for … in(参见12.3节):
for each (var foo in xml)
{
}
据我所知,这些都是语法差异 – 但你可能已经绰绰有余了.
标签:javascript,parsing,ecma262,e4x 来源: https://codeday.me/bug/20190630/1335065.html