是否可以编写单向三元运算符?
Is it possible to write one way ternary operator?
我想用三元运算符替换 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;
}
但这似乎并没有增加多少价值,只会造成混乱。请注意,三元运算符通常用作赋值,而不是控制流语句。
更具体地说,这是更改的部分。请注意,没有办法像 {condition} ? value :
这样的语法明智。您总是必须 return 冒号后的表达式。
(fibArr[i] % 2 !== 0) ? (result += fibArr[i]) : null;
我想用三元运算符替换 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;
}
但这似乎并没有增加多少价值,只会造成混乱。请注意,三元运算符通常用作赋值,而不是控制流语句。
更具体地说,这是更改的部分。请注意,没有办法像 {condition} ? value :
这样的语法明智。您总是必须 return 冒号后的表达式。
(fibArr[i] % 2 !== 0) ? (result += fibArr[i]) : null;