我想用三元运算符替换if语句。我的代码中的情况是,我想使用一个if语句,而不是if-else。但是似乎三元运算符采用了强制性的else语句。
我打算产生错误的代码是:
for(let i = 0; i<fibArr.length; i++) {
!fibArr[i] % 2 === 0 ? result += fibArr[i]; //The problem area
}
相反,我必须编写没有任何问题的代码:
for(let i = 0; i<fibArr.length; i++) {
if(fibArr[i] % 2 !== 0) {
result += fibArr[i]
}
}
完整代码:
function sumFibs(num) {
let a = 0, b = 1, fib = 0;
let i = 0;
let fibArr = []
let result = 0;
while(fib <= num){
fibArr.push(fib)
a = b;
b = fib;
fib = a+b;
}
for(let i = 0; i<fibArr.length; i++) {
if(fibArr[i] % 2 !== 0) {
result += fibArr[i]
}
}
console.log(result)
return result;
}
我想你可以做类似的事情:
function sumFibs(num) {
let a = 0, b = 1, fib = 0;
let i = 0;
let fibArr = []
let result = 0;
while(fib <= num){
fibArr.push(fib)
a = b;
b = fib;
fib = a+b;
}
for(let i = 0; i<fibArr.length; i++) {
(fibArr[i] % 2 !== 0) ? (result += fibArr[i]) : null;
}
console.log(result)
return result;
}
但是这似乎并没有增加太多价值,只是造成了混乱。注意,三元运算符通常用作赋值,而不是控制流语句。
更具体地说,这是已更改的部分。
(fibArr[i] % 2 !== 0) ? (result += fibArr[i]) : null;