2016-11-25 46 views
2

我有象下面這樣的javascript代碼:Jquery document.click中的多個函數定義?


function foo() { 
    console.log("outer function") 
} 

$(document).click(function(event) { 
    if(false) { 
     foo(); 
     function foo() { 
      console.log("inner function") 
     } 
    } 
    else{ 
     foo(); 
    } 
}); 

在調用中的其他富里document.click它扔foo是不是一個函數。

如果我從外部document.click中刪除函數定義,那麼它的工作原理或者如果我從document.click中刪除函數定義,那麼它也可以工作。

從結果我可以感覺到某種範圍問題。由於它是一種腳本語言,它可以採用最新的定義並執行它,但它沒有這樣做。

任何人都可以請解釋爲什麼它顯示爲「foo不是一個功能」的背景,如果這是一個愚蠢的問題,道歉。

+1

哪裏是功能的{}?刪除第二行 – Mahi

+0

對於錯誤錯誤Mahi,抱歉,在點擊事件結束後編輯了上面的代碼片段 –

+1

put')'結束括號 – Mahi

回答

1
 $(document).click(function(event) { 
      function foo() { 
       console.log("inner function") 
      } 
      if(true) { 
       foo() //Here is my problem 
      } 
     }) 

     function foo() { 
      console.log("outer function") 
     } 

當我運行此代碼。沒有條件,[foo不是函數]。 您可以將foo視爲一個變量。當您調用此函數時,搜索算法正在從內部範圍搜索到外部範圍。

+0

HI Liumy,對不起,誤導我的問題,我的代碼中有一個錯誤,我發佈了。我會用我所擁有的一切重新發布它 –