代码之家  ›  专栏  ›  技术社区  ›  steve

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

  •  7
  • steve  · 技术社区  · 17 年前

    出身背景

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

    问题

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

    实例

    HTML页面

    <script language="JavaScript" src="test.js" type="text/javascript"></script>
    <script>function foo() {alert('bar');}</script>
    

    function foo() {alert('foo');}
    

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

    谢谢

    4 回复  |  直到 17 年前
        1
  •  5
  •   picardo    17 年前

    嗯,使用解析器可能并不总是理想的,因为它需要额外的步骤将您和其他人的代码复制和粘贴到解析器中,即使这样,我也不确定它是否能捕获您想要的内容。协作Javascript开发经过时间考验的解决方案是为代码命名名称空间。

    var myNamespace = function (){
       var myPrivateProperty;
       var myPrivateFunction = function(){};
       return{
    
          myPublicProperty: '',
          myPublicFunction: function(){}
    
    
       }
    
     }();
    

    这是基于Douglas Crockford的 module pattern .

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

     myNamespace.myPublicFunction();
    

    以及您的公共财产:

     myNamespace.myPublicProperty;
    

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

        2
  •  5
  •   Ken    17 年前

    我经常使用 JSLINT

    它不仅检查重复的函数,还检查全局变量和一大堆其他东西。正如道格拉斯在他的一个视频中所说,它只允许你使用JavaScript的好的部分

        3
  •  1
  •   unknown unknown    17 年前

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

        4
  •  1
  •   Aaron Digulla    11 年前

    我的解决方案是一个简单的Java HTML解析器(我刚刚用regexps破解了一个解析器;您可能想试试 http://java-source.net/open-source/html-parsers/jtidy )还有ApacheRhino库( http://www.mozilla.org/rhino/doc.html ).

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

    http://jqueryjs.googlecode.com/svn/trunk/jquery/build/runtest/env.js )由John Resig设计,用于模拟浏览器。这允许我在JUnit测试中测试JavaScript。我可以填写表格、提交表格、检查页面布局等。

    有关详细信息,请参阅我的博客: http://blog.pdark.de/2008/11/18/testing-the-impossible-javascript-in-a-web-page/