【问题标题】:Multiple variables in for loops, Javascript [duplicate]for循环中的多个变量,Javascript [重复]
【发布时间】:2015-01-11 15:31:02
【问题描述】:

我不明白这段代码是如何工作的。有人可以指出我如何使用的正确方向吗?和:在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;
};

【问题讨论】:

标签: javascript for-loop


【解决方案1】:

这对于 for 循环没什么特别的。 “?”是ternary operator.

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

如果 step 未定义,则计算为 i &lt;= end,否则计算为 i &gt;= end。或者换句话说,它给出与

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

的第二次使用?运算符更棘手,因为它操纵 i 的内容作为副作用。那就是这段代码的作者评估了变量step。如果为真则 i 将逐步前进,否则将递增。

【讨论】:

  • 所以据我了解,我可以使用三元运算符作为 if 语句的简写吗?是使用速记属性更好,还是只使用 if..else?
  • @Punkdog 视情况而定;将? 运算符用于表达式(分配变量等)和if 用于语句(运行此代码块或其他代码块,无返回值)。
【解决方案2】:

那只是Conditional (Ternary) Operator

这几乎是 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 &lt; length)应该是 i &lt;= end
  3. 否则(已定义步骤)for 循环条件应为i &gt;= end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2013-06-05
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多