Challenge Global Scope and Functions a un problème.
L'agent utilisateur est : Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36
.
Veuillez décrire comment reproduire ce problème et inclure des liens vers des captures d'écran si possible.
Mon code :
// Declare your variable here
var myGlobal = 10;
function fun1() {
// Assign 5 to oopsGlobal Here
}
// Only change code above this line
function fun2() {
var output = "";
if (typeof myGlobal != "undefined") {
output += "myGlobal: " + myGlobal;
}
if (typeof oopsGlobal != "undefined") {
output += " oopsGlobal: " + oopsGlobal;
}
console.log(output);
}
Nous devons commencer à utiliser es6 let
et const
. var
déclaration de variable
Les fonctionnalités ES6, notamment let
et const
seront couvertes en détail dans les nouveaux sujets du programme en cours de développement (voir ici ). Ces défis passeront également en revue les problèmes pouvant être causés par la portée/le levage lors de l'utilisation de var
.
Pour l'instant, ce défi sert d'introduction à la portée et à certains des problèmes à surveiller lorsque var
est utilisé, et contient toujours des informations utiles car les campeurs sont susceptibles de rencontrer du code provenant d'autres sources (anciennes) qui le font. utilisez var
(par exemple du code hérité, etc.), et c'est donc une introduction utile aux problèmes discutés.
Il pourrait y avoir un argument pour supprimer la ligne
Vous devez toujours déclarer vos variables avec var.
ou le modifier avec une mise en garde concernant l'apprentissage de let
et const
plus tard, mais je pense que ce défi est bien pour une première introduction au sujet.
cc @FreeCodeCamp/issue-moderators
@BKinahan Bien dit.
Quand utiliser et ne pas utiliser var
ne dépend pas toujours du développeur individuel, mais la plupart du temps, cela dépend de l'équipe.
Bien que je n'aie pas trouvé de moment où var
ne pouvait pas être remplacé par let
ou const
j'ai parlé à un ingénieur d'OpenTable, qui avait récemment remanié l'ensemble de sa base de code pour l'utiliser ES2015, et il a mentionné qu'il y avait un cas où let
ou const
était la cause d'un bogue et que var
devait être utilisé mais il ne pouvait pas se souvenir des détails exacts de pourquoi c'était.
Je ne pense pas qu'il faille décourager var
. Mieux vaut expliquer le fonctionnement de var
et laisser le développeur choisir une fois qu'il sera plus avancé dans son cheminement vers l'illumination.
Il y a aussi quelques bizarreries avec let
et const
qui, si vous n'êtes pas au courant, peuvent traverser certaines boucles (voir : zone morte temporelle ). Cela n'empêche pas l'utilisation de let
et const
, même si c'est une nuisance. Cela signifie simplement que grokker une chose est aussi important que de connaître une chose.
Merci pour les entrées. Ce sont deux bons points. Je suppose que tout est basé sur des opinions. Cependant, je maintiendrais ma déclaration et j'irais jusqu'à prêcher pour utiliser des données immuables et utiliser des bibliothèques comme immutable.js ou mori pour éviter les mutations de données inattendues. ️
Commentaire le plus utile
@BKinahan Bien dit.
Quand utiliser et ne pas utiliser
var
ne dépend pas toujours du développeur individuel, mais la plupart du temps, cela dépend de l'équipe.Bien que je n'aie pas trouvé de moment où
var
ne pouvait pas être remplacé parlet
ouconst
j'ai parlé à un ingénieur d'OpenTable, qui avait récemment remanié l'ensemble de sa base de code pour l'utiliser ES2015, et il a mentionné qu'il y avait un cas oùlet
ouconst
était la cause d'un bogue et quevar
devait être utilisé mais il ne pouvait pas se souvenir des détails exacts de pourquoi c'était.Je ne pense pas qu'il faille décourager
var
. Mieux vaut expliquer le fonctionnement devar
et laisser le développeur choisir une fois qu'il sera plus avancé dans son cheminement vers l'illumination.Il y a aussi quelques bizarreries avec
let
etconst
qui, si vous n'êtes pas au courant, peuvent traverser certaines boucles (voir : zone morte temporelle ). Cela n'empêche pas l'utilisation delet
etconst
, même si c'est une nuisance. Cela signifie simplement que grokker une chose est aussi important que de connaître une chose.