2011-08-16 19 views
3

スコープの外から変数(関数の値を持つ)にアクセスできるかどうかは疑問でした。私は次のようなコードを持っています:関数内のjavascript関数

function parentFunction(){ 
    var childFunction = function() { 
    // do something 
    } 
} 

$(function(){ 
    // need to access childFunction() here. 
}); 
+0

は 'parentFunction()' 'childFunctionを返すことができ、これを達成するための唯一の方法は、希望childFunction parentFunctionの属性を作ることです() '変数は実行終了時に?または 'parentFunction()'を呼び出す前に 'childFunction()'に影響を与えようとしていますか? – Rodaine

答えて

6
var childFunction; 

function parentFunction(){ 
    childFunction = function() { 
    // do something 
    } 
} 

$(function(){ 
    childFunction(); 
}); 
+0

childFunctionがparentFunctionの任意のクロージャを取得すると便利ですが、それ以外の場合は名前空間を失い、グローバル名前空間を汚染します。 – Matt

+1

これはグローバルにすべてが一緒に起こっていると仮定して、私は単にスコープを示しています... – jondavidjohn

+0

それは働いた - 私はchildFunctionの値を初期化するためにparentFunctionを最初に呼び出さなければなりませんでした。それから、私はchildFunctionを呼び出すことができました。ありがとうございました。 – donkapone

2

いいえ、あなたはいません。

var parentFunction = (function(){ 
    var actualParentFunction = function(){ 
     this.childFunction = function() { 
     // do something 
     }; 
    } 

    return new actualParentFunction(); 
})(); 

これで、あなたが行うことができますポイント:

parentFunction.childFunction(); 
関連する問題