Regardons d'abord un morceau de code
function show(){ alert(abc); } var abc="defg"; show();
Les personnes ayant de l'expérience en programmation C ou Java peuvent dire : "Ce programme est mort. La variable est définie après la fonction qui référence la variable. Le bug va vous tuer." Exécutez-le sur le navigateur. Quel est le résultat ? Fonctionne parfaitement ! Parlons ensuite de ce qui se passe : la différence entre les variables définies avec var et sans var.
1. Pas de variable
Pour faire simple, il n'est pas prudent d'omettre var lors de la définition d'une variable, mais c'est légal. À ce stade, quel que soit l'endroit où la variable est définie, l'interpréteur lui donnera une portée globale.
2. Il y a var
Sûr et légal. La portée d'une variable définie dépend de l'endroit où elle est définie. Quant à la portée spécifique, veuillez vous référer à l'article « Portée Javascript » de ce blog.
De cette façon, le problème du début peut être résolu. Ce qui se trouve à l'intérieur de la fonction est la définition de abc, mais la valeur n'est pas définie pour le moment, abc a une portée globale et ce qui se trouve à l'extérieur de la fonction n'est qu'une mise à jour de la valeur de abc.