recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - problème de portée variable

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

伊谢尔伦伊谢尔伦2814 Il y a quelques jours473

répondre à tous(2)je répondrai

  • 怪我咯

    怪我咯2017-05-19 10:09:17

    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

    (function () {
    //最新执行
    var name
    //然后执行if
    if (typeof name === 'undefined') {
        //然后在这里给name赋值
        name = 'Jack';
        console.log('Goodbye ' + name);
    } else {
        console.log('Hello ' + name);
    }
    })()

    répondre
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-19 10:09:17

    Faites attention à la promotion variable, votre code deviendra comme suit après analyse

    var name ;
    name = 'World!';
    (function () {
        var name;
        if (typeof name === 'undefined') {
            name = 'Jack';
            console.log('Goodbye ' + name);
        } else {
            console.log('Hello ' + name);
        }
    })();

    répondre
    0
  • Annulerrépondre