使用条件运算符运行多个语句将不起作用

时间:2019-03-03 00:54:24

标签: javascript ternary-operator

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;
}

我正在尝试通过代码战进行挑战,以测试数字是否为质数。在最终条件下,我想打印到控制台并将值设置为primeNum。如果我只做一个而不是两个都做似乎很好。

我知道编写一个包含两个语句的单独函数并让其被调用是可能的,或者可以使用if和else语句,但是我在这里尝试遵循最佳实践。

2 个答案:

答案 0 :(得分:3)

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

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语句。

答案 1 :(得分:0)

在技巧上加一些括号,否则您的解释器不知道什么属于哪个表达式。 嵌套三元数并不是最佳实践。考虑多个if()返回x;