Javascript 是否有工具验证ECMAScript并确认其与ECMAScript语言规范第三版兼容?
我目前正试图弄清楚为什么JSDT会发布类似“”的错误 在测试过程中,我意识到它可以很好地用于以下简单文件:Javascript 是否有工具验证ECMAScript并确认其与ECMAScript语言规范第三版兼容?,javascript,eclipse,validation,ecma262,Javascript,Eclipse,Validation,Ecma262,我目前正试图弄清楚为什么JSDT会发布类似“”的错误 在测试过程中,我意识到它可以很好地用于以下简单文件: var a = { urlParseRE: /^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]
var a = {
urlParseRE: /^\s*(((([^:\/#\?]+:)?(?:(\/\/)((?:(([^:@\/#\?]+)(?:\:([^:@\/#\?]+))?)@)?(([^:\/#\?\]\[]+|\[[^\/\]@#?]+\])(?:\:([0-9]+))?))?)?)?((\/?(?:[^\/\?#]+\/+)*)([^\?#]*)))?(\?[^#]+)?)(#.*)?/,
test: b.replace(/^\/|(\/[^\/]*|[^\/]+)$/g, "")
};
并在jQuery.mobile-1.3.1.min.js等复杂文件上报告错误
我使用在线工具格式化模拟的jQuery脚本,然后删除其中几乎所有的内容,以制作一个简单的示例,这将有助于复制问题。当文件的大小从大约3000行减少到300行时,一些新的验证错误在上面的原始错误之前被发布。我以完全不同的问题结束了我的实验。验证错误发布在“”上,示例如下:
!function(){
window.alert("passed 1");
}(),
function(){
window.alert("passed 2");
}();
window.alert("passed 3");
我知道JSDT项目暂时处于休眠状态,在创建新版本之前,我想确定最后一个简单的js示例是否适用于ECMAScript语言规范第三版。是否有任何在线或离线工具来验证这一点?您可以使用此工具
“用于多用途分析的ECMAScript解析基础结构”
如果您将最后一个块提供给Esprima的验证器,它会说“代码在语法上是有效的。”
Esprima遵循ES5,所以从技术上讲,它可以传递ES5相关的语法,而只有ES3兼容的解析器无法理解这些语法
但在本例中,我没有看到任何与ES5相关的内容,因此它一定是JSDT中的一个bug。有点过时,但指出ES3和ES5问题我不知道任何此类工具;无论如何,逗号运算符确实存在于ES3中。Ref:谢谢,我安装了Konqueror,因为它的布局引擎支持ECMAScript v3之前的脚本,并且现在将它用作我的验证工具。到目前为止,我的代码片段可以在其中工作,这证实了我使用的语法对v3是有效的。据我所知,这并不正确,但您始终可以使用符合ES3要求的设置来JSLint代码(,在线和离线)。我使用了在线版本,它似乎与配置/*JSLint browser:true,coach:false,es5:false,slopy:true,怀特:是的,它不明白!运算符相当于()并抱怨“将立即函数调用封装在括号中,以帮助读者理解表达式是函数的结果,而不是函数本身”。Esprima现在遵循ECMAScript 2016,这意味着您不能使用它来检查代码是否为ES3/ES5。不幸的是,有人知道其他网站吗??