Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在网页中检测重复javascript函数名的工具?_Javascript - Fatal编程技术网

在网页中检测重复javascript函数名的工具?

在网页中检测重复javascript函数名的工具?,javascript,Javascript,背景 我们有一个web应用程序,其中几个开发人员编写了几个.js文件来操作DOM,而重复函数名的问题已经潜入我们的应用程序中 问题 有谁能推荐一个工具,当我们不小心编写了一个包含两个同名javascript函数的网页时,它会警告我们 示例 HTML页面 由于foo()在页面中声明了两次,因此显然只加载优先的一个 我使用的工具似乎忽略了这一点。Firebug只显示加载的函数。Netbeans将在navigator中显示这两个函数(没有警告),但一次只查看一个文件(即,我不能将它指向HTML文件,同

背景

我们有一个web应用程序,其中几个开发人员编写了几个.js文件来操作DOM,而重复函数名的问题已经潜入我们的应用程序中

问题

有谁能推荐一个工具,当我们不小心编写了一个包含两个同名javascript函数的网页时,它会警告我们

示例

HTML页面

由于foo()在页面中声明了两次,因此显然只加载优先的一个

我使用的工具似乎忽略了这一点。Firebug只显示加载的函数。Netbeans将在navigator中显示这两个函数(没有警告),但一次只查看一个文件(即,我不能将它指向HTML文件,同时查看它和.js)。web developer extensions允许我一次查看所有内容,但没有错误或警告。Firefox的错误控制台也不会抛出任何警告或错误。我也是


谢谢

我的解决方案是一个简单的Java HTML解析器(我刚刚用regexps破解了一个解析器;您可能想试试)和ApacheRhino库()

如果函数被重新定义,应该可以在Rhino中重载解析器以抛出错误

我使用John Resig稍微修改过的env.js()版本来模拟浏览器。这允许我在JUnit测试中测试JavaScript。我可以填写表格、提交表格、检查页面布局等

有关详细信息,请参阅我的博客:

我经常使用

简而言之,它是一个使用JavaScript的JavaScript“编译器”。通过观看道格拉斯·克罗克福德的训练视频,我学到了很多东西


它不仅检查重复的函数,还检查全局变量和一大堆其他东西。正如Douglas在他的一个视频中所说,它只允许您使用JavaScript的好部分。好吧,使用解析器可能并不总是理想的,因为它需要额外的步骤将您和其他人的代码复制和粘贴到解析器中,即使这样,我也不确定它是否能捕获您想要的内容。协作Javascript开发经过时间考验的解决方案是为代码命名名称空间

var myNamespace = function (){
   var myPrivateProperty;
   var myPrivateFunction = function(){};
   return{

      myPublicProperty: '',
      myPublicFunction: function(){}


   }

 }();
这是基于道格拉斯·克罗克福德的

然后,您可以通过以下方式调用公共函数:

 myNamespace.myPublicFunction();
以及您的公共财产:

 myNamespace.myPublicProperty;

每个开发人员都可以在自己的名称空间中进行开发,这样就不会干扰其他人的代码。

ScriptManager.RegisterClientScriptInclude(Me,Page.GetType,“jsTest”,“test.js”)

+1表示jslint。特别适合捕捉不寻常的浏览器相关问题感谢您的响应!我确实尝试过jsLint,发现它很有用,但因为我要处理多个JS文件以及HTML页面中的脚本,所以很难使用它。我正在寻找的理想工具是将URL或HTML文件作为输入,并返回所有问题?我发现了一个非常时髦的工具,它将JSLINT作为构建过程的一部分吗?因为很明显,没有一个理想的工具适合我们的具体情况,我把这个想法带给了我的老板——他让我组装了一个PoC,看起来我们将继续使用它。我们甚至可以尝试在现有代码上实现它。谢谢博客链接是dead@AliQanavatian谢谢,修好了。
 myNamespace.myPublicFunction();
 myNamespace.myPublicProperty;