Javascript-Funktion
给我你的怀抱
给我你的怀抱 2017-06-26 10:53:22
0
6
676
function Foo(){ getName = function(){ console.log(1); }; return this; } var getName = function (){ console.log(4) }; Foo().getName();

Warum gibt der obige Code 1;

aus?

Nachdem foo() ausgeführt wurde, wird dies das Fensterobjekt in foo() sein. Und die folgende Variable getName ist auch ein Funktionsausdruck

foo, entspricht es nach der Ausführung dem folgenden Code?

getName = function(){ console.log(1); }; var getName = function (){ console.log(4) }; getName(); //4
给我你的怀抱
给我你的怀抱

Antworte allen (6)
小葫芦

没调用Foo的时候

window.getName = function(){ console.log(4); }

调用Foo()的时候

getName = function(){ console.log(1); }; // 相当于更改了 window.getName

调用后Foo里面的return this的确指向window,所以最后结果是1.

    扔个三星炸死你
    function Foo(){ getName = function(){ console.log(1); }; return this; } //全局声明一个变量getName var getName = function (){ console.log(4) }; //重新赋值 getName = function () { console.log(1) } //最终打印结果为1 window.getName()
      黄舟

      Foo().getName(); 执行的是Foo中的getName

        阿神
        function Foo(){ getName = function(){ console.log(1); }; return this; } var getName = function (){ console.log(4) }; Foo().getName();
        function Foo(){ getName = function(){ console.log(1); }; return this; } var getName = function (){ console.log(4) }; getName = function () { console.log(1) } window.getName()
          代言

          你console.log(Foo())看看,确定是window?

            ringa_lee

            Foo函数里面的getName不是用var申明的,所以是全局的,所以当Foo运行时函数里面的getName函数会覆盖外面定义的

              Neueste Downloads
              Mehr>
              Web-Effekte
              Quellcode der Website
              Website-Materialien
              Frontend-Vorlage
              Über uns Haftungsausschluss Sitemap
              Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!