Podczas pisania kodu tak jsLint narzeka implikowanych globalnych:Unikanie Implied globalnych w javascript (JSlint)
var Test = (function(){
var fnc = function(x){
alert("pew: "+x);
};
return {
fnc: fnc
};
}());
Test.fnc("hat");
(konkretnie 'dorozumianą globalny: alert 4')
Co jest uważany za prawidłowy sposób uniknąć tego? Moja instynktowna reakcja jest to, ale nie jestem przekonany, że to jest „poprawny”:
var Test2 = (function(global){
var alert = global.alert;
var fnc = function(x){
alert("pew: "+x);
};
return {
fnc: fnc
};
}(this));
Test2.fnc("hat");
Edit: Konsensus wydaje się, że problemem nie jest fakt, że mam dostęp do globalnej, to więcej, że nie mówię jslintowi, czym są globale. Zostawię to otwarte nieco dłużej, aby sprawdzić, czy ktoś inny ma dane wejściowe, wtedy wybiorę odpowiedź.
IIRC czy deklaracje nazw zmiennych nie muszą być rozdzielane przecinkami? –
@ZackTheHuman tam przestrzeń oddzielona. Okazuje się, że JSLint mówi, że przecinek jest oddzielony. Zawsze używałem oddzielonej spacjami listy bez błędów. Prawdopodobnie obsługuje zarówno – Raynos
Uwaga, nie powinno być spacji między początkiem komentarza a "globalnym", w przeciwnym razie jslint go nie przetwarza. – oyenamit