2011-07-14 6 views
2
createModelView: function (obj,vitalslength,headerValue) {      
    for(i = 0, vitalsLen = vitalslength; i < vitalsLen; i++) {  
     // Do some logic  
     }  
    } 

二つの質問は二回

  1. 私は機能のための私のreturn文を置くべきは実行されません。 forループの中に置くとうまくいきます。

  2. 私はこの関数を呼び出しますObj.createModelView(arguments);なぜvitalsLengthに応じて2回またはn回実行されません。 1 .:へIt only executes once.

+1

ここで、「return」ステートメントを配置しますか? 「議論」は何ですか?なぜあなたは 'vitalslength'のエイリアスを作成していますか? – pimvdb

+4

'i'の前に' var'があるはずです。さもなければ、あなたは名前空間を汚染するでしょう。なぜあなたは他の変数とまったく同じ値を持つ長さ変数を持っていますか? – davin

答えて

1

いくつかの可能な問題:

最初のループのための

var i=0, vitalsLen=0; 

前に、2つの変数を宣言してもvitalslengthが数値であることを確認して確認してください。 isNaNまたはtypeof小切手でそれを行うことができます。

if (isNaN(vitalslength)) 
    alert("vitalsLength is not a number"); 

これらのいずれかが問題を引き起こしているかどうかはわかりません。

でもjavascriptと同じであるかどうかはわかりませんが、i++よりも++iのほうが効率的です。

二つの質問について:あなたは本当に1が必要な場合は

  1. これは、ためのループの後に置くことができます。
  2. は、うまくいけば、上記のあなたがループ内でreturn文を置けば、それは
+0

OPはこれのどの部分がうまくいっていると言うことができますか? – AlienWebguy

2

あなたが2で説明した、まさに、ループの中で無条件return声明を配置する場合に発生します:ループは一度だけ実行されます。したがって、ループの後にreturnステートメントを配置する必要があります。それは一度だけ実行されるよりも、あなたがforループ内returnを配置する場合

createModelView: function (obj,vitalslength,headerValue) {      
    for(var i = 0; i < vitalslength; i++) {  
     // Do some logic  
    } 
    return; 
} 
2

はこれを試してみてください。 returnは、関数がさらに実行を停止し、それを要求した値を返すように要求します。

returnforのループ内に配置している可能性があります。そのループは1回しか実行されません。

+0

最後に空白を返す理由はありますか? –

+0

私は彼のアプリケーションでは空白ではないと思います。おそらく、構造体の例だけで、 ''ある程度の論理をする 'ブロック内に定義されたものを返すでしょう。 – AlienWebguy

0

(1)いいえ、それは動作しません修正されます。ループ内に配置すると、関数は最初のループで返されます。 return文は、呼び出されたobj.createModelView()関数を終了します。

createModelView: function (obj, vitalslength, headerValue) { 
    var i, vitalsLen = vitalsLength;  
    for(i = 0; i < vitalsLen; i += 1) { 
     // Do some logic 
    } 
    return; 
} 

(2)関数を1回呼び出すと2回(n回)実行されません。 obj.createModelView関数をn回呼び出すには、関数呼び出しをループに入れなければなりません。

var i, n = 4; 
for(i=0; i < n; i += 1) { 
    obj.createModelView(); 
}