var name = 'World!';
(function () {
if (typeof name === 'undefined') {
var name = 'Jack';
console.log('Goodbye ' + name);
} else {
console.log('Hello ' + name);
}
})();
Excusez-moi, le nom est une variable globale Pourquoi n'est-il pas défini dans la fonction d'exécution immédiate
Parce qu'il existe également une variable de nom dans votre fonction auto-exécutable. Le nom de la variable dans la fonction auto-exécutable est déclaré avec var et sera promu en haut de la portée de la fonction auto-exécutable
C'est-à-dire votre code. peut être grossièrement considéré comme exécuté comme ceci
Faites attention à la promotion variable, votre code deviendra comme suit après analyse