2012-01-05 24 views
1

この関数をs.ui.createpulldown関数の外で呼び出すとします。それは私はあなたが必要なスコープに表示されている関数を変数に割り当てる必要がありfunction someName()他の関数の中で関数を呼び出す

+0

なぜ 'someName'をその外側に定義しないのですか? –

答えて

3

に確認する必要が変わるものに、可能である:

//... 
var someName; 
S.ui.createpulldown = function() { 

    someName = function(){ 

    } 

    someName() // gets called 

} 
someName(); // gets called also 
//... 

またはあなたはそれがグローバルになりたい場合は変数(すべてのスコープに表示)、ウィンドウオブジェクトにそれを固定できます。これが唯一のS.ui.createpulldown機能(THX、pimvdb)を実行した後に動作することを

window.someName = function(){}; 

は注意してください。

+1

それは、それが呼び出されることはありません。最初に 'createpulldown'を実行する必要があります。 – pimvdb

3

これはスコープの問題です。それはcreatePullDownのローカル変数であるため、あなたがしsomenameをしたいあなたは外でそれを宣言、またはにそれを渡す必要がある機能の外からも見えました場合は、次の例

function pulldown(){ 
    for(var i=0; i<n; i++){ ... } 
} 

i; //can't use "i" here! 

にちょうどiように、somefunctionにアクセスすることはできません外部に見える、または外部に見えるオブジェクトのプロパティを設定する人。

var someFunction; 
var someObj = {}; 

S.ui.createpulldown = function() { 

    function someName(){ 

    } 

    someFunction = someName; 
    someObj.func = someName; 

} 

S.ui.createpulldown(); 

someFunction(); 
someObj.func(); 
+0

someName()関数に別のonload関数があり、呼び出されていない場合。 – theJava

0

somenameは、定義されている機能外にあります。複数の場所で使用する場合は、名前空間の適切な部分に配置します。

0

s.ui.createpulldown関数の外に関数someName()を呼び出すことはできません。

関連する問題