我目前正在试图弄清楚为什么JSDT会发布“JavaScript error on valid regex”之类的错误。
在我测试时,我意识到它适用于这样的简单文件:
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项目暂时休眠并仅支持ECMAScript v3所以在创建新问题之前,我想确定最后一个简单的js示例对于ECMAScript语言规范第3版是正确的。是否有任何在线或离线工具来验证?
答案 0 :(得分:2)
您可以使用Esprima。
“用于多功能分析的ECMAScript解析基础设施”
如果您将最后一个块提供给Esprima的验证器,它会说“代码在语法上是有效的。”
Esprima遵循ES5,因此从技术上讲,它可以传递与ES5相关的语法,而ES3兼容的解析器将无法理解。
但在这种情况下,我没有看到任何与ES5有关的内容,所以它一定是JSDT中的一个错误。
答案 1 :(得分:0)
有些过时,但是https://jshint.com/指出了ES3和ES5问题