for循环不执行两次

时间:2011-07-14 15:23:14

标签: javascript

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

两个问题

  1. 我应该在哪里放置函数的return语句。如果我放在for循环中它会工作。

  2. 当我调用此函数时Obj.createModelView(arguments);为什么它不会执行两次或n次,具体取决于vitalsLength。 It only executes once.

5 个答案:

答案 0 :(得分:2)

To 1。:如果在循环中放置一个无条件return语句,那么你所描述的内容将会发生:循环将只执行一次。因此,您应该在循环之后放置return语句

答案 1 :(得分:2)

试试这个:

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

答案 2 :(得分:2)

如果将return置于for循环内,则只执行一次。由于return要求函数停止执行,并返回您要求的值。

您可能已将return放在for循环中,这就是它只执行一次的原因。

答案 3 :(得分:1)

一些可能的问题:

首先确保在for循环之前声明两个变量

var i=0, vitalsLen=0;

并检查以确保vitalslength是一个数字。您可以使用isNaNtypeof支票来执行此操作。

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

其中一个可能会或可能不会导致问题,请告诉我。

另外......我不记得javascript和其他语言是否相同, 但++i使用效率高于i++

关于这两个问题:

  1. 如果你真的想要一个,可以放在for循环之后。
  2. 希望以上会解决它

答案 4 :(得分:0)

(1)不,如果将return语句放在循环中,它将不起作用。如果将它放在循环中,则该函数将在第一个循环中返回。 return语句退出调用的obj.createModelView()函数。

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

(2)当您调用该函数一次时,该函数不会执行两次(或n次)。要调用obj.createModelView函数n次,你必须将函数调用放在循环中。

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