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

上面的程式碼為什麼輸出的是1;

foo()運行之後輸出了this,這個this是window對象,foo()中的getName是不是也就成了全局下的函數表達式;而下面的var getName也是一個函數表達式;為什麼打印結果是1;

foo,執行後它等同於下面這個程式碼麼?

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

全部回覆 (6)
小葫芦

沒呼叫Foo的時候

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

呼叫Foo()的時候

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

調用後Foo裡面的return this的確指向window,所以最後結果是1.

    扔个三星炸死你

    雷雷

      黄舟

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

        阿神

        雷雷 雷雷

          代言

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

            ringa_lee

            Foo函數裡面的getName不是用var申明的,所以是全域的,所以當Foo運行時函數裡面的getName函數會覆蓋外面定義的

              最新下載
              更多>
              網站特效
              網站源碼
              網站素材
              前端模板
              關於我們 免責聲明 Sitemap
              PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!