При написании такого кода 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");
Edit:
Похоже, что консенсус заключается в том, что проблема не в том, что я получаю доступ к глобальному, а в том, что я не говорю jslint, что такое глобальные. Я оставлю это открытым немного дольше, чтобы увидеть, есть ли у кого-то еще вход, затем я выберу ответ.