Inspekcje JSHint wbudowane w PhpStorm poinformowały mnie o magicznych liczbach JavaScriptu i zdaję sobie sprawę, że dzięki temu jaśniejszy kod uniknie ich użycia.Unikanie używania magicznych liczb w JavaScript - alternatywy, które współpracują z JsHint
Próbowałem to:
var constants = {
millisecs: 1000,
secs: 60
};
i również w ten sposób:
var constants = function() {
this.millisecs = 1000;
this.getMillisecs = function() {
return this.millisecs;
};
};
JsHint narzeka obu.
Biorąc rozwiązanie z this answer ThoughtWorks porządku:
var constants = (function() {
var millisecs = 1000,
defaultMsgsPerSecond = 60;
this.getMillisecs = function() { return millisecs; };
this.getDefaultMsgsPerSecond = function() { return defaultMsgsPerSecond; };
})();
Przypuszczalnie z powodu zamknięcia. Dlaczego jest to akceptowane, podczas gdy pozostałe dwie sugestie zaczerpnięte z innego pytania SO nie są?
Edycja: Chociaż nie powoduje błędu, nie działa. Występuje błąd mówiący, że stałe są niezdefiniowane. JsFiddle.
Dla wyjaśnienia - przez "działa" znaczy "nie wywoła ostrzeżenie od JsHint"
Jeden problem wyraźnie pojawiają się ze swoimi dwoma pierwszymi przykładami kodu, ale brakuje w tym ostatnim przykładzie kodu, jest to, że „stałe” nie są stałe - to jest, można później zmienić w kodzie (z 'stałych .millisecs = 100; '). – penartur
@penartur, który wydaje mi się być odpowiedzią - działający przykład natychmiast wywołuje samą siebie, czyniąc jej właściwości prywatnymi, a zatem ujawniają się tylko dwa pozyskane? – bcmcfc
@ Wouter-Huysentruit, czy mógłbyś wyjaśnić swoją edycję? – bcmcfc