2016-06-23 18 views
-1

私は 'row'という名前の通常の関数を書いています。私はもう1つの関数名 'foo'を持っていて、その関数ではif条件を書いてあり、if条件にはsetTimeoutを書いています。javascriptでif条件にあるsetTimeoutからグローバル関数を呼び出す

私は関数内でsetTimeoutを作成しようとしましたが、if if insideという条件を呼び出しました。次に、同じエラーが発生しています。その行は未定義です。

rows() { 
    alert("Hello Row"); 
} 
foo() { 
    if (a == a) { 
     setTimeout(function() { 
      this.row(); 
     } 
     } 
    } 

私の質問は、setTimeoutの中で '行'関数を呼び出す方法です。

+1

あるべきときには、rowという名前の関数を呼び出していますか? –

+0

実際のコードを表示してください... – epascarello

+0

値 'this'はその機能の中で異なります。この参照を変数に保存し、それを介して関数にアクセスする必要があります。 – abhishekkannojia

答えて

0

あなたはfunctionキーワードで宣言されなければならないlexical scoping

foo() { 
var that = this; 
    if (a == a) { 
     setTimeout(function() { 
      that.row(); 
     } 
     } 
    } 
+0

ありがとう私のために働いた –

1

関数を作成する必要があります。

setTimeoutの構文が正しくありません。

thisは必要ありません。

それはなぜ `)(` this.rowを使用しているrows

var a; 
 

 
function rows() { 
 
    console.log("Hello Row"); 
 
} 
 

 
function foo() { 
 
    if (a == a) { 
 
    setTimeout(function() { 
 
     rows(); 
 
    }, 1000); 
 
    } 
 
} 
 

 
foo();

関連する問題