Quelqu'un a dit une fois qu'un très bon programme n'a pas si..else, bien sûr, le commutateur n'est pas aussi bon que si..else. L'utilisation du commutateur est interdite dans la spécification JS.
L'objet de commande résout parfaitement ce problème.
Citer un blog étranger:
JavaScript a de bonnes instructions d'écoulement de contrôle, qui sont souvent enveloppées dans des accolades bouclées. Mais il y a une exception: Switch… instruction de cas. La chose étrange à propos de Switch… Cas est que vous devez ajouter la rupture de mot-clé à la fin de chaque cas pour empêcher le contrôle des processus de se déplacer vers l'instruction CASE suivante. Le voyage dans le temps fait référence à la méthode pour permettre l'exécution de plusieurs cas. Lorsque la rupture attendue n'est pas rencontrée, le contrôle sera automatiquement remis au cas suivant. Cependant, tout comme les demi-colons et les accolades bouclées, vous pouvez oublier par inadvertance d'écrire des pauses. Lorsque cela se produit, les vérifications d'erreur ultérieures sont plus douloureuses car l'instruction elle-même est correcte. Par conséquent, c'est une bonne habitude d'écrire un cas… se briser par paires.
Nous disons généralement que JavaScript a des littéraux d'objets élégants et des fonctions de niveau supérieur, ce qui rend les requêtes de méthode spécifiques très simples. L'objet créé pour les requêtes de méthode, nous l'appelons un objet actif ou un objet de commande, qui est utilisé dans de nombreux modèles de conception de logiciels, y compris des modèles de commande puissants et utiles.
Exemple:
La copie de code est la suivante:
// Méthode de commutation
fonction testSwitch (name) {
commutateur (nom) {
cas «1»:
return 'hack';
casser;
cas «2»:
retourner 'slash';
casser;
cas «3»:
return 'run';
casser;
défaut:
retourne false;
casser;
}
}
// utilise l'objet de commande
fonction testfn (name) {
var noms = {
'1': function () {
return 'hack';
},
'2': function () {
retourner 'slash';
},
'3': function () {
return 'run';
}
};
if (typeof name [name]! == 'function') {
retourne false;
}
Noms de retour [name] ();
}
// Résultats de test
var result1 = TestSwitch ('1');
var result2 = testfn ('2');
Console.info (result1, result2);