2011-07-21 53 views
7

是否有可能在另一個函數內有一個函數?函數內部的jquery函數

function foo() { 

    // do something 

    function bar() { 

     // do something 

    } 

    bar(); 

} 

foo(); 
+1

@ gion_13:嚴格來說,在一個函數中有一個函數不是「閉包」。即使函數不是函數體本身的一部分(即非局部變量),該函數將保留其範圍內的任何變量的方面使其成爲「閉包」。 – FK82

回答

14

是的,你可以這樣做。 foo以外的任何人都不會看到bar

你可以叫barfoo爲:

function foo() { 

    // do something 

    function bar() { 

     // do something 

    } 
    bar(); 

} 
+0

我更新了一些代碼,這仍然有可能嗎?對不起,這個愚蠢的問題。 – daryl

+0

:)。剛剛添加到我的答案。是的你可以。 – Mrchief

3

這就是所謂的在JavaScript中嵌套函數。內部函數對外部函數是私有的,並且也形成閉包。更多詳情請見here

但要特別注意變量名稱的碰撞。外部函數中的變量對內部函數是可見的,但反之亦然。

+1

您的意思是範圍。 ;) – daryl

+0

我的意思是'範圍'? – GarlicFries

+0

「外部函數中的變量對內部函數可見,但反之亦然。」 @Brennon – daryl

4

是的,你可以。
或者你也可以做到這一點,

function foo(){ 

    (function(){ 

     //do something here 

    })() 

} 

還是這個,

function foo(){ 

    var bar=function(){ 

     //do something here 

    } 

} 

或者你想要的功能 「酒吧」 是普遍的,

function foo(){ 

    window.bar=function(){ 

     //something here 

    } 

} 

合這可以幫助你。