for 循环中的多个变量,Javascript

Multiple variables in for loops, Javascript

我不明白这段代码是如何工作的。有人能指出我正确的使用方向吗?和 : 在 for 循环中?它们是什么意思?

var range = function(start, end, step) {
    var arr = [];
    for (var i = start; step > 1 || step === undefined ? i <= end : i >= end; step ? i = i + step : i++) {
        arr.push(i);
    }
    return arr;
};

for 循环并没有什么特别之处。 “?”是 ternary operator.

step === undefined ? i <= end : i >= end
如果步骤未定义,

计算结果为 i <= end,否则为 i >= end。或者换句话说,它给出与

相同的结果
(function foo() {
    if (step === undefined) {
        return (i <= end); 
    } else {
        return (i >= end); 
    }
})()

第二次使用?运算符更棘手,因为它会操纵 i 的内容作为副作用。那就是这段代码的作者对变量 step 求值。如果为真则i逐级递增,否则递增。

那只是 Conditional (Ternary) Operator.

它几乎是 shorthand 的 if-else 语句,其中:

return (boolean expression) ? ifTrue : ifFalse;

等同于:

if (boolean expression) {
    return ifTrue;
} else {
    return ifFalse;
}

所以在你的 for 循环中,

step === undefined ? i <= end : i >= end

表示:

  1. 如果步骤未定义
  2. for循环条件(通常看起来像i < length)应该是i <= end
  3. 否则(步骤已定义)fo​​r 循环条件应为i >= end