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
表示:
- 如果步骤未定义
- for循环条件(通常看起来像
i < length
)应该是i <= end
- 否则(步骤已定义)for 循环条件应为
i >= end
我不明白这段代码是如何工作的。有人能指出我正确的使用方向吗?和 : 在 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
表示:
- 如果步骤未定义
- for循环条件(通常看起来像
i < length
)应该是i <= end
- 否则(步骤已定义)for 循环条件应为
i >= end