避免javascript中的隐含全局变量(JSlint)

dav*_*vid 5 javascript jslint

在编写这样的代码时,jsLint会抱怨隐含的全局变量:

var Test = (function(){
    var fnc = function(x){
        alert("pew: "+x);
    };

    return {
        fnc: fnc
    };
}());

Test.fnc("hat");
Run Code Online (Sandbox Code Playgroud)

(具体来说,'隐含的全球:警报4')

什么被认为是避免这种情况的正确方法?我的本能反应就是这样,但我不相信它是'正确的':

var Test2 = (function(global){
    var alert = global.alert;

    var fnc = function(x){
        alert("pew: "+x);
    };

    return {
        fnc: fnc
    };
}(this));

Test2.fnc("hat");
Run Code Online (Sandbox Code Playgroud)

编辑:共识似乎是问题不是我访问全局的事实,更多的是我没有告诉jslint全局变量是什么.我会把这个打开一段时间以确定是否有其他人有输入,然后我会选择一个答案.

Ray*_*nos 8

您可以在评论前添加文件

/*global alert $ document window*/

这通常是我告诉JSLint它不是暗示而是外部的.

这既不引人注目又告诉你的程序员你将这些变量声明为外部变量,这对于更大的多文件程序是有用的.

  • IIRC不是变量名声明需要用逗号分隔吗? (2认同)