2011-07-14 31 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);为什么它不执行两次或n次取决于vitalsLength。 It only executes once.

+1

你想在哪里放置'return'语句?什么是“参数”?你为什么要为'vitalslength'创建一个别名? – pimvdb

+4

你应该在'i'之前有'var',否则你会污染一个名字空间。为什么你有一个长度变量与另一个变量具有完全相同的值? – davin

回答

1

一些可能出现的问题:

首先确保前两个变量声明为循环

var i=0, vitalsLen=0; 

而且还要检查以确保vitalslength是一个数字。您可以使用isNaNtypeof检查。

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

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

另外...我不记得它是否与JavaScript在其他语言相同, ,但++ii++更有效。

至于两个问题:

  1. 它可以在后放的循环,如果你真的想要一个。
  2. 希望上面将修复它
+0

OP可以说明这个工作的哪一部分吗? – AlienWebguy

2

为1:如果你把一个无条件return声明中循环,正是你在2描述会发生:循环将只执行一次。因此,您应该在之后将您的return声明放置在循环中。

2

试试这个:

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

最后有没有理由空头回报? –

+0

我想它在他的应用程序中不会是空白的。他可能会返回在'//做一些逻辑块'内定义的东西 - 只是一个结构示例。 – AlienWebguy

2

如果你把returnfor循环内比将只执行一次。由于return要求该功能停止进一步执行并返回您要求的值。

您可能已将return放在for循环内,这就是为什么它只执行一次。

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(); 
}