使用条件操作员运行多个语句将无效


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及其他语句,但我正在尝试在此处遵循最佳实践来做到这一点。

如果您在单个表达式内执行多个事物(例如条件操作员的一个部分),则可以在内部使用逗号运算符括号。例如:

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;

最新更新