避免单独的.js文件中javascript函数命名冲突的最佳方法?

避免单独的.js文件中javascript函数命名冲突的最佳方法?,javascript,Javascript,是否有一种首选方法可以将.js文件中的函数与页面上其他.js文件由于名称相似而可能发生的冲突隔离开来 例如,如果您有一个函数 function AddTag(){} 在Core.js中,还有一个 function AddTag(){} 在Orders.js中,它们会发生冲突。您将如何最好地构造您的.js文件,以及您将使用哪些命名约定来隔离它们 谢谢我将函数的范围限制在该文件中 (function () { var AddTag = function AddTag () { }

是否有一种首选方法可以将.js文件中的函数与页面上其他.js文件由于名称相似而可能发生的冲突隔离开来

例如,如果您有一个函数

function AddTag(){}
在Core.js中,还有一个

function AddTag(){}
在Orders.js中,它们会发生冲突。您将如何最好地构造您的.js文件,以及您将使用哪些命名约定来隔离它们


谢谢

我将函数的范围限制在该文件中

(function () {
    var AddTag = function AddTag () {
    };
}());
…有时使it中的某些功能可供全球范围使用:

var thisNamespace = function () {
    var AddTag = function AddTag () {
        …
    };
    var foo = function foo() {
        AddTag();
        …
    };
    var bar = function bar() {
        …
    };
    return {
        foo: foo,
        bar: bar
    }
}();
使用封装(和)

在fileA.js中

function fileA()
{
  this.function1 = function()
  {
    return 'foo';
  };

}
在fileB.js中

function fileB()
{
  this.function1 = function()
  {
    return 'bar';
  };

}

您可以使用“名称空间”。像这样

File1.js:

var Orders = {}
(function(o) {
     o.function1 = function() {}
     o.function2 = function() {}
 })(Orders);

File2.js

var Sales = {}
(function(o) {
     o.function1 = function() {}
     o.function2 = function() {}
 })(Sales);
您可以这样调用它们:

Sales.function1();
Orders.function1();

通常不要使用全局函数/变量。阅读此处的javascript模块模式

从技术上讲,上面显示的函数调用是不必要的。如果你有局部变量,你就不想污染全局名称空间,因为Javascript有函数作用域。是的,但是如果你有长名称空间(比如Yahoo使用的名称空间),它们是有用的。它可以避免您每次定义新函数时键入
This.Is.A.Long.Namespace
。您可以只执行
o.newFunction=function(){}
,那么在第一个示例中如何调用该函数呢?调用是否必须在外部函数中进行?此外,如果正在使用jQuery$(document).ready(function(){});您可以从该函数中调用这些函数,例如AddTag()?外部函数是否在$(document).ready()内、单独或包含在其中?AddTag();。对是-只要调用在限制范围的函数内。这是我写的匿名函数中的一个函数(就像AddTag)。谢谢。当我移动jQuery$(文档)时。准备好了吗。。。内部(函数(){}());我可以调用私有函数。谢谢