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

Chr*_*isP 11 javascript

是否有一种首选方法可以将.js文件中的函数与页面上其他.js文件的潜在冲突隔离开来?

例如,如果你有一个功能

function AddTag(){}
Run Code Online (Sandbox Code Playgroud)

在Core.js然后有一个

function AddTag(){}
Run Code Online (Sandbox Code Playgroud)

在Orders.js中他们会发生冲突.您如何最好地构建.js文件以及您将使用哪些命名约定来隔离它们?

谢谢

Que*_*tin 20

我将函数的范围限制为该文件.

(function () {
    var AddTag = function AddTag () {
    };
}());
Run Code Online (Sandbox Code Playgroud)

......有时可以在全球范围内使用其中的一些功能:

var thisNamespace = function () {
    var AddTag = function AddTag () {
        …
    };
    var foo = function foo() {
        AddTag();
        …
    };
    var bar = function bar() {
        …
    };
    return {
        foo: foo,
        bar: bar
    }
}();
Run Code Online (Sandbox Code Playgroud)


Che*_*try 7

您可以使用'命名空间'.像这样

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);
Run Code Online (Sandbox Code Playgroud)

你可以像这样调用它们:

Sales.function1();
Orders.function1();
Run Code Online (Sandbox Code Playgroud)

通常不要使用全局函数/变量.在这里阅读javascript模块模式http://yuiblog.com/blog/2007/06/12/module-pattern/