2017-03-21 6 views
-1

私は関数内に一連の関数を持っていますが、変数tempはf1、f2、f3では利用できますが、f4では利用できません。 uncaught referenceerror:tempは定義されていません。私は$ scope.tempを使用するとうまく動作します。誰かがtempをf4()で利用できない理由を教えてもらえますか?ありがとう。JavaScriptの変数値を失う

function(){ 
var temp = something; 
f1(){} 
f2(){} 
f3(){ 
// added event listners 
    f4(); 
} 
f4(){ 
// temp is not available 
} 

} 
+1

閉鎖を検索します。多くのトピック。 (それは実際にSO上で最も投票されたjavascriptの質問) –

+0

正しい構文ですか? 'f1(){}'のような関数を定義できますか?あなたは 'function f1(){}'を意味しますか?あるいは 'const f1 = function(){}'ですか? –

+0

試しましたが、tempはf4で利用可能です) – ABOS

答えて

0

var temp = something;を使用してください。 this.tempでない場合、ネストされた関数を呼び出すことによってコンテキストが変更されます。

0

あなたの例は実際にf4と呼ばれることはありませんでしたので、私はいくつかの仮定をしなければなりませんでしたが、うまく動作しているようです。あなたのコードがどのように使用されるかについての私の前提が間違っている場合は、おそらくもっと詳細を提供することができますか?

function foo(){ 
 
    var temp = 'something'; 
 
    function f1(){} 
 
    function f2(){} 
 
    function f3(){ 
 
    // added event listners 
 
    f4(); 
 
    } 
 
    function f4(){ 
 
    // temp is not available 
 
    console.log(temp); 
 
    } 
 
    f3(); 
 
} 
 

 
foo();

関連する問題