function isPrime(num) {
//TODO
let primeNum = false;
let prime = (num == 0 || num == 1) ? primeNum = false : (num == 2) ? console.log("2 is prime") :
(num % 2 == 0) ? console.log("num is divisable by 2 therefore is not prime") : {
console.log("number may be prime");
primeNum = true;
}
return primeNum;
}
我试图从代码战中挑战来测试num是否为素数。在我的最终条件中,我想打印到控制台并将值设置为primeNum。如果我做一个或另一个但不是两个都似乎工作正常。
我知道可以通过编写一个包含两个语句的单独函数来代替它,或者我可以使用if和else语句,但我正在尝试遵循这里的最佳实践。
如果必须在单个表达式中执行多个操作(例如在条件运算符的某个部分内),则可以在括号内使用逗号运算符。例如:
const condition = false;
const result = condition ? 'foo' : (
console.log('falsey!'),
'bar'
);
console.log(result);
或者,对于您的代码:
function isPrime(num) {
const primeNum = (num == 0 || num == 1)
? false
: (
num == 2
? ( console.log("2 is prime"), true)
: (
num % 2 == 0
? (console.log("num is divisable by 2 therefore is not prime"), false)
: (console.log("number may be prime"), null)
)
);
return primeNum;
}
const result = isPrime(4);
console.log('4:', result)
但这不是一个好主意 - 它很难读,也不是最佳实践。最好使用标准的if
/ else
语句。
添加一些括号应该是技巧,或者你的解释器不知道什么属于哪个表达式。嵌套三元并不是最佳实践。考虑多个if()返回x;