使一个javascript变量只对同一个.js文件中的函数有效

use*_*171 4 javascript variables global-variables local-variables

我对Javascript有些新意,我坚持这一项.有人可以告诉我如何使javascript变量仅在它所在的.js文件中可用.

例:

假设我有两个.js文件,PG1和PG2.PG1包含var channel = Channel01;

PG2包含一个具有相同名称的变量,但输入的变量不同(等号后面的部分)(var channel = Channel02)

我不希望PG1上的function1使用PG2上的变量或PG2上的function2来使用PG1上的变量.

我也是从单独的HTML页面调用这些函数.

问题:我的所有函数最终只使用一个变量,无论它们在哪个页面上.(例如,function1和function2都使用var channel = channel01)

问题:如何限制第1页上的函数仅使用该.js页面上的变量

谢谢!

ale*_*lex 7

将整个事物包装在一个立即调用的函数表达式中,这将有效地为文件提供自己的范围.

(function() {
   // Your file's contents live here.
})();
Run Code Online (Sandbox Code Playgroud)


mpm*_*mpm 6

模块模式:

var myModule = (function(exports){

    var x = "foo";

    exports.myFunction = function(){
        alert(x);
    };

})(typeof exports!="undefined" && exports instanceof Object ? exports : window );
Run Code Online (Sandbox Code Playgroud)

myFunctionwindow在浏览器的范围内提供.

编辑

我引用作者的话说:"我也是从一个单独的HTML页面调用这些函数."

因此作者需要全局访问他定义的功能.

不需要var myModule,也不需要导出,只是为了兼容AMD:

(function(exports){

    var x = "foo";

    exports.myFunction = function(){
        alert(x);
    };

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

现在x for myFunction只存在于闭包中,但myFunction仍然可以在全局范围内访问x.全局范围内的任何x定义或任何范围都不会影响x = "foo"