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

ste*_*eve 8 javascript

背景

我们有一个Web应用程序,其中几个开发人员编写了几个操作DOM的.js文件,并且重复的函数名称问题已经渗透到我们的应用程序中.

任何人都可以推荐一个工具,当我们意外地编写一个带有两个同名javascript函数的网页时,它会警告我们吗?

HTML页面

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

test.js

function foo() {alert('foo');}
Run Code Online (Sandbox Code Playgroud)

由于foo()在页面中声明了两次,显然只加载了优先级.

我用过的工具似乎忽略了这一点.Firebug仅显示加载的功能.Netbeans将在导航器中显示这两个功能(没有警告),但一次只查看一个文件(即,我无法将其指向HTML文件并同时查看它和.js.)和web开发人员扩展允许我一次查看所有内容,但没有错误或警告.Firefox的错误控制台也不会抛出任何警告或错误.IE也不是.

谢谢!

Rih*_*eij 5

我经常使用JSLINT

简而言之,它是使用JavaScript的JavaScript的"编译器".通过观看Douglas Crockford的培训视频,我学到了很多东西.

它不仅检查重复的函数,还检查全局变量,以及其他一些东西.就像道格拉斯在他的一个视频中说的那样,它允许你只使用好的JavaScript


pic*_*rdo 5

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

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

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


   }

 }();
Run Code Online (Sandbox Code Playgroud)

这是基于 Douglas Crockford 的模块模式

然后你可以这样调用你的公共函数:

 myNamespace.myPublicFunction();
Run Code Online (Sandbox Code Playgroud)

以及您的公共属性:

 myNamespace.myPublicProperty;
Run Code Online (Sandbox Code Playgroud)

每个开发者都可以在自己的命名空间中进行开发,以免踩到别人的代码。