javascript - 练习 一个范围的总和 eloqent java
问题描述
做什么
step = start < end ? 1 : -1
在这个函数中是什么意思?它来自名为 Eloquent Java 的书的答案,我不知道函数值上下文中的问号和冒号是什么意思
function range(start, end, step = start < end ? 1 : -1) {
let array = [];
if (step > 0) {
for (let i = start; i <= end; i += step) array.push(i);
} else {
for (let i = start; i >= end; i += step) array.push(i);
}
return array;
}
function sum(array) {
let total = 0;
for (let value of array) {
total += value;
}
return total;
}
console.log(range(1, 10))
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55
解决方案
这称为三元运算。
它是一个等效于 if-else 语句的单行语句。
step = start < end ? 1 : -1
和说的一样
if(start < end)
step = 1;
else
step = -1;
格式看起来像这样
variable = (condition) ? true_value : false_value;
推荐阅读
- node.js - 从另一个文件修改变量
- magento2 - 登录magento 2时recaptcha出现错误500
- c++ - 如何将“extern int getchar (void);”从 stdio.h 转换为 Qt::Key?
- web-services - RestRequest 添加参数不起作用 Delphi Rad Studio
- github - 使用 Firefox 将 UTF-8 复制的文本粘贴到 github 问题中,删除 `\n`?
- uwp - C++/WinRT 控制台 UWP 应用的 AppxManifest.xml 中的入口点是什么?
- c++ - std::string resize 正在破坏比较运算符 (==)
- javascript - 测试片段和列出变量的 Javascript 编辑器
- python - pandas- 以字符串形式获取索引
- python - 在 Python 中解决有理数线性规划问题