функция в JS c If

Создай функцию getLargestExpressionResult, которая принимает два числа a и b и возвращает наибольший возможный результат среди выражений:

a + b
a - b
a * b
a / b

ограничения:

Имей в виду, что a и b могут быть отрицательными. Не используй тернарный оператор или ключевое слово else. Не используй объект Math.

Почему-то у меня работает только сложение.

'use strict';

/**
 * @param {number} a
 * @param {number} b
 *
 * @returns number
 */

// write code below this line
function getLargestExpressionResult(a, b) {
  if (a + b) {
    return a + b;
  }

  if (a - b) {
    return a - b;
  }

  if (a * b) {
    return a * b;
  }

  if (a / b) {
    return a / b;
  }
}

введите сюда описание изображения


Ответы (2 шт):

Автор решения: Gelloiss
function getLargestExpressionResult(a, b) {
  let max = a + b;

  if (a - b > max) {
    max = a - b;
  }

  if (a * b > max) {
    max = a * b;
  }

  if (a / b > max) {
    max = a / b;
  }
  return max;
}

Вы же все время возвращали сумму и все. А нужно максимальное. Сначала записываем в макс одно из выражений, а потом проверяем остальные. Если кто-то больше, записываем его в макс.

→ Ссылка
Автор решения: OPTIMUS PRIME

if (a + b): a + b - некое число, а любое число в логическом контексте будет true, кроме числа 0, вот почти всегда и возвращалось a + b.

Не используй тернарный оператор или ключевое слово else. Не используй объект Math.

Так не надо делать, но язык позволяет:

  1. Сортирует 4 числа по убыванию, берет первое. Array.sort()
function getLargestExpressionResult(a, b) {
  return [ a + b, a - b, a * b, a / b ].sort( (a,b) => b - a )[0];
}
  1. Логическое "И" &&, вторая часть не выполнится, если первая окажется false
function getLargestExpressionResult(a, b) {
  let max = a + b;

  (a - b > max) && (max = a - b);
  (a * b > max) && (max = a * b);
  (a / b > max) && (max = a / b);
  
  return max;
}
  1. switch - case
function getLargestExpressionResult(a, b) {
  let max = a + b;

  switch (a - b > max) { case true: max = a - b }
  switch (a * b > max) { case true: max = a * b }
  switch (a / b > max) { case true: max = a / b }
  
  return max;
}
→ Ссылка