当编写这样的代码时,jsLint提示隐含的全局变量:

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

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

Test.fnc("hat");

(特别是“隐含全局:警报4”)

什么被认为是避免这种情况的正确方法?我的本能回应是这样,但我不认为这是“正确的”:
var Test2 = (function(global){
    var alert = global.alert;

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

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

Test2.fnc("hat");

编辑:
共识似乎是问题不是我正在访问一个全局变量,而是更多的是我没有告诉jslint全局变量是什么。我将这个开放时间稍长一点,看看是否有其他人输入了内容,然后我会选择一个答案。

最佳答案

您可以在文件前添加评论
/*global alert $ document window*/
通常,这就是我告诉JSLint的暗示,它不是外部的,而是外部的。

这既不麻烦,又告诉您的程序员,您将这些变量声明为外部变量,这对于较大的多文件程序很有用。

关于javascript - 避免在JavaScript(JSlint)中使用隐式全局变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4857169/

10-13 01:58