Les inspections de JSHint maintenant intégrées dans PhpStorm m'ont informé des nombres magiques JavaScript et je réalise que cela rendra le code plus clair pour éviter de les utiliser.Éviter d'utiliser des nombres magiques en JavaScript - des alternatives qui fonctionnent avec JsHint
J'ai essayé ceci:
var constants = {
millisecs: 1000,
secs: 60
};
et aussi ceci:
var constants = function() {
this.millisecs = 1000;
this.getMillisecs = function() {
return this.millisecs;
};
};
JsHint se plaint à la fois.
Prenant la solution de this answer Thoughtworks bien:
var constants = (function() {
var millisecs = 1000,
defaultMsgsPerSecond = 60;
this.getMillisecs = function() { return millisecs; };
this.getDefaultMsgsPerSecond = function() { return defaultMsgsPerSecond; };
})();
probablement en raison de la fermeture. Pourquoi est-ce que cela est accepté, alors que les deux autres suggestions tirées d'une autre question SO ne le sont pas? Edit: Bien que cela ne déclenche pas d'erreur, cela ne fonctionne pas réellement. Les erreurs pour dire les constantes sont indéfinies. JsFiddle.
Pour clarifier - par « fonctionne » je veux dire « ne déclenche pas un avertissement de JsHint »
Un problème qui apparaît clairement avec vos deux premiers exemples de code, mais il manque dans ce dernier exemple de code, est que les « constantes » ne sont pas que constante - qui est, peuvent être modifiés ultérieurement dans le code (avec 'constantes .millisecs = 100; '). – penartur
@penartur qui me semble être la réponse - l'exemple de travail s'appelle immédiatement, rendant ses propriétés privées et donc seuls les deux getters sont exposés? – bcmcfc
@ Wouter-Huysentruit s'il vous plaît pourriez-vous expliquer votre montage? – bcmcfc