J'avais un peu lu en vitesse tout à l'heure, je m'y suis remis avec quelques nouvelles remarques :
Partie 1 :
Quand on crée une variable sans le var , on crée une variable de type "global".
Maintenant, si justement on ne l'oublie pas, on crée une variable de type "local".
Tout ça risque de porter (pun) à confusion. Dans le premier cas, il s'agit d'une variable de portée globale. Dans le second, d'une variable de portée locale (function scope pour être précis). Dans les deux cas, les variables n'ont pas de type.
Idem ici :
Les variables de types "global"
l'hoisting.
Le hoisting
Je te suggère de choisir entre l'
et le
.
Comprende le hoisting
J'insiste énormément sur le mot déclaration ! Souvent déclaration et initialisation sont deux termes qui sont confondus. Prenez garde.
D'accord, mais pourquoi insister à cet endroit précis alors que tu parles d'hoisting ? var x;
est tout aussi hoisté que var x = 1;
, du coup je trouve l'avertissement un peu mal placé.
alert(pseudo);
Je te suggère de remplacer tous les alert
par des console.log
. Ca a le mérite de fonctionner partout. Ce serait dommage que tes lecteurs se mangent des ReferenceError
en essayant de faire tourner le code que tu proposes.
Partie 2 :
De base, vos scripts sont chargés de manières synchrones. Ce qui veut dire que si jamais vous avez un fichier super volumineux à télécharger, votre code HTML ne sera pas affiché tant que le téléchargement ne sera pas terminé.
Alors, je connais mieux node que les browsers, MAIS je crois que ce que tu dis là est faux. J'ai pas vérifié, à prendre avec des pincettes. Il me semble qu'il s'agit d'une question d'exécution et non de téléchargement. Avant que par ex. webkit puisse afficher l'HTML, il faut qu'il télécharger le script, le parse et l'exécute.
(En fait je crois que j'ai pas besoin de vérifier. Si ce que tu disais était vrai, inliner le code dans des <script>
placés en head résoudrait le problème du téléchargement.)
defer permet de charger vos fichiers de manière asynchrone
Du coup, pas seulement "charger".
Solution à privilégier car elle convint par sa facilité d'application
Moui. C'est correct, mais c'est pas vraiment la raison pour laquelle on privilige cette solution. On la choisit plutôt pour que ce ne soit pas bloquant.
Partie 3 :
Tu donnes l'exemple d'ajouter une méthode au prototype d'un objet de base du JS : Array. J'ai peur que ça donne de mauvaises idées aux gens qui apprennent grâce à ton tuto. C'est une pratique tellement mauvaise et dangereuse, source de tellement de problèmes, que soit j'éliminirais complètement cet exemple pour le remplacer par un autre (avec un objet de ton choix par exemple), solution que je préfère, soit tu expliques également pourquoi ajouter des méthodes aux prototypes de base est d'une bêtise incomparable.
Je passe sur forEach, même si je suis pas d'accord avec l'intérêt/l'utilité de forEach telle qu'écrite ici.
Si par exemple vous devez utiliser qu'une seule et unique fois une fonction, pourquoi ne pas faire une fonction anonyme ?
Pour ne pas avoir une stack-trace incompréhensible. Très souvent, les style-guides JS interdisent de ne pas nommer des fonctions.
Du coup, une fois que l'on exécute le code qui se trouve ci-dessous, on doit obtenir "[object Window]".
Uniquement dans une navigateur.
Félicitions, on vient juste de changer la valeur de notre this !
Non, c'est la valeur de this qui a changé. Tu ne peux pas changer la valeur de this. (rvalue je suppose)
Le curry
En français, on dit "la curryfication".
Démonstration
Pourquoi une grosse suite d'if/else et pas un switch ou un objet littéral ?
C'est tout pour ce soir. J'ai un peu l'impression de faire le boulot des validos JS ces jours.