recherche

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

chaîne de portée javascript

var str="hello";
var obj={
   str:"world",
   fun:function(){
       alert(str);
       }
}
obj.fun(); //结果是hello

Pourquoi le résultat est bonjour, pas monde

阿神阿神2858 Il y a quelques jours612

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

  • 滿天的星座

    滿天的星座2017-05-19 10:30:18

    var str="hello";【这个str,obj对象里可以读取】
    var obj={
    str:"world";
    fun:function(){
    
       alert(str);【这个str指obj外部str是【window.str简写】,想要弹出"world"需要使用,this.str,指定作用域。】
       }
    
    }

    répondre
    0
  • PHPz

    PHPz2017-05-19 10:30:18

    var str="hello";
    var obj={
    str:"world",
    fun:function(){
       alert(str) //window.str => 'hello'
       alert(this.str) // obj.str => 'world'
      }
    }

    répondre
    0
  • 高洛峰

    高洛峰2017-05-19 10:30:18

    Parce que le str:"world" écrit dans votre objet obj signifie obj.str="world". Il s'agit d'une propriété, pas d'une variable. Ce qui apparaît dans le dernier obj.fun() que vous avez exécuté est la variable str, pas un attribut (bien sûr, c'est aussi un attribut de la fenêtre globale). Alors tu comprends ? Si vous alertez this.str ou obj.str, vous pouvez obtenir "world".

    répondre
    0
  • ringa_lee

    ringa_lee2017-05-19 10:30:18

    La variable str est en fait un attribut de window et n'a rien à voir avec l'attribut str de l'objet obj. Cela n'implique pas de problèmes de chaîne de portée. Ce que vous comprenez devrait être le suivant :

    .
    var str="hello";
    function change(){
        str="world";
        alert(str)
    }
    change();

    Dans cet exemple, la variable globale str est d'abord réaffectée lors du changement de fonction. Lorsque alert(str) doit être exécuté, la variable str est recherchée au point de départ de sa propre chaîne de portée, c'est-à-dire sa propre chaîne de portée. propre objet variable. S'il n'est pas trouvé, recherchez ensuite un niveau plus haut et trouvez la variable str, mais à ce moment, str a été réaffecté au monde, donc le monde apparaîtra.

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-19 10:30:18

    var str="hello";
    
    var obj={
    str:"world",
    fun:function(str){
       console.log(window.str,this.str,str);
      }
    }
    
    obj.fun('!') //hello world !

    Comprends-tu ?

    répondre
    0
  • Annulerrépondre