Y a-t-il une différence entre 2 blocs de code ci-dessous?
J'aimerais savoir quelle est la meilleure pratique. Est-il légal de déclarer une nouvelle variable dans un énoncé de retour, comme dans le bloc 2 du bloc 2? P>
bloc 1: p>
p>
function caseInSwitch(num) { switch (num) { case 1: return answer = "alpha"; case 2: return answer = "beta"; case 3: return answer = "gamma"; case 4: return answer = "delta"; } } console.log(caseInSwitch(3)); //output gamma console.log(answer); //output gamma
3 Réponses :
Dans le bloc 1, votre code est concatéré deux chaînes ensemble, dans laquelle le bloc 2 Votre code attribue la valeur à la variable. Je suggère d'aller avec le bloc 2 car le bloc 1 n'est pas la meilleure pratique. P>
Je pense que vous pouvez faire comme suit. Il n'y a rien comme légal. Faire la manière la plus compatible.
À mon avis n'est pas une bonne pratique.
Les deux options utilisent plusieurs chemins de retour, ce qui ne devrait être que fait avec prudence . p>
Votre deuxième option utilise une variable non déclarée qui est donc une variable globale. Les variables gobales sont forts> mauvaises pratiques: Pourquoi les variables globales sont-elles considérées? Mauvaise pratique? p> Plus de plus, tous les chemins ne renvoient pas une valeur, ceci est à nouveau considéré comme une mauvaise pratique, que doit-on revenir à votre fonction si le paramètre est invalide? Il devrait retourner quelque chose. P> Melvins Réponse est à peu près comment je le ferais mais je ne voudrais pas t concaténer la chaîne. p> p> function fromArray(num) {
let answers = ["alpha", "beta", "gamma", "delta"];
return (typeof answers[num-1] === 'undefined') ? "Not Found" : answers[num-1];
}
function fromAssocArray(num) {
let answers = {1:"alpha", 2:"beta", 3:"gamma", 4:"delta"};
return answers.hasOwnProperty(num) ? answers[num] : "N/A";
}
console.log("1 " + fromArray(1));
console.log("7 " + fromArray(7));
console.log("---------- Associated Array Below --------------");
console.log("1 " + fromAssocArray(1));
console.log("7 " + fromAssocArray(7));
Pourquoi pas seulement
retourner "alpha" code>?
Avec bloc 1, la console.log (réponse); Devrait-il retourner non défini, car il a été défini avec
laisse code> dans la fonction, il n'existe donc pas dans la portée extérieure.avec Block 2, il est égal à définir une variable globale
réponse code>.
@Applejam, vous devriez poster cela comme une réponse
Ni l'un ni l'autre ne ressemble à la "meilleure" pratique. Je voudrais simplement l'écrire donc il est évident ce qui se passe, en utilisant plus d'une ligne si nécessaire.
Mauvaise déclaration: "Les deux [...] donnent le même résultat dans la console". Avez-vous appuyé sur "Exécution de l'extrait de code" au Bloc 1? ;-)
Liée, et vaut la peine de lire: Stackoverflow.com/Questtions/36707/...
Tant qu'il n'y a pas d'erreur dans la console, pourquoi devrait-il être "illégal"?