2016-03-11 66 views
0

请检查下面的代码,请注意我的for循环的条件取决于参数stepFor循环中的动态Javascript条件

而不是每次条件执行时,它决定使用哪个分支,我想测试一次 - 我曾假设我可以创建一个委托或条件,但似乎没有工作。

在JS中可以这样做吗?

代码:

function(start, end, step) { 
    if (step === undefined) { 
    step = 1; 
    } 

    var result = []; 
    for (; (step < 0) ? start >= end : start <= end; start += step) { 
    result.push(start); 
    } 

    return result; 
} 

我尝试:

function(start, end, step) { 
    if (step === undefined) { 
    step = 1; 
    } 

    var condition = (step < 0) ? start >= end : start <= end; 
    var result = []; 
    for (; condition; start += step) { 
    result.push(start); 
    } 

    return result; 
} 
+0

由于条件在开始被更改之前进行评估,所以不起作用。黑客的方式是将每个函数定义为函数。但绝对有更好的方法。我会继续前进。 – Carcigenicate

回答

2

要做到这一点,你需要做condition的功能,如下图所示。但即使你这样做,条件仍然在循环的每一次迭代中执行。

var condition = (step < 0) ? 
     function(start){ 
      return start >= end; 
     } : 
     function(start){ 
      return start <= end; 
     }; 
    var result = []; 
    for (; condition(start); start += step) { 
    result.push(start); 
    }