Тернарный оператор возвращает undefined вместо ожидаемого значения - PullRequest
0 голосов
/ 09 мая 2020

Для данного числа функция должна возвращать отрицательное значение этого числа (оно может быть уже отрицательным). Почему в этом случае тернарный оператор не работает? Использование оператора 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 ]

3 голосов
/ 09 мая 2020

Вам все равно нужно return ваше значение:

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

Если вы хотите использовать неявные возвраты, вам необходимо преобразовать вашу функцию в стрелочную функцию:

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

Кстати, для этой цели можно использовать минус Math.abs():

const alwaysNegative = -Math.abs(num);
1 голос
/ 09 мая 2020

В тернарной операторной функции отсутствует оператор возврата. Попробуйте так:

function makeNegative(num) {
  return(num < 0 ? num : -num);
}
0 голосов
/ 09 мая 2020

Вам нужно назначить num, вам не хватает =:

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

Для получения дополнительной информации вы можете проверить docs .

EDIT: я снова посмотрел на вопрос, и, учитывая использование в этом случае, это не сработает. Если бы вы хотели применить метод к числу без возвращаемого значения, это было бы решением, но в этом случае вам нужно было бы искать оператор return. Я сохраню свой ответ здесь как ссылку для других, но это не ответ на вопрос @Awscr.

...