三元运算符返回“未定义”而不是期望值

时间:2020-05-08 22:44:05

标签: javascript conditional-operator

给出一个数字,该函数必须返回该数字的负数(它可能已经是负数)。为什么在这种情况下三元运算符不起作用?使用if语句有效。

// Does not work
function makeNegative(num) {
  num < 0 ? num : -num;
}

// Works
function makeNegative(num) {
  if (num < 0) {
    return num;
  }
  return -num;
}

// TEST
console.log(makeNegative(-4)); //-4
console.log(makeNegative(6)); //-6

3 个答案:

答案 0 :(得分:3)

您仍然需要return的值:

function makeNegative(num) {
    return num < 0 ? num : -num;
}

如果要使用隐式返回,则需要将函数转换为箭头函数:

const makeNegative = num => num < 0 ? num : -num;

顺便说一句,您可以为此使用负数Math.abs()

const alwaysNegative = -Math.abs(num);

答案 1 :(得分:1)

您缺少三元运算符函数中的return语句。像这样尝试:

function makeNegative(num) {
  return(num < 0 ? num : -num);
}

答案 2 :(得分:-1)

您需要分配num,但缺少=

function makeNegative(num) {
  num = (num < 0) ? num : -num;
}

有关更多信息,您可以签出docs

编辑:我再次查看了该问题,并给出了这种情况下的用法,这将不起作用。如果您希望将方法应用于没有返回值的数字,那么这将是解决方案,但是在这种情况下,您将寻找return语句。我将在这里保留我的答案以供他人参考,但这不是@Awscr问题的答案。