Использование тернарного оператора внутри функции в js - PullRequest
0 голосов
/ 07 июня 2018

У меня есть вопрос: всякий раз, когда код запускается, вывод ложен.Почему?

    function isGreaterThan (numberOne, numberTwo) {
  switch (isGreaterThan) {
    case numberOne > numberTwo:
      return true;
      break;
    default:
      return false;
      break;
  }
}
console.log(isGreaterThan(67, 2));

Ответы [ 3 ]

0 голосов
/ 07 июня 2018

Этот код довольно запутан.Во-первых, вы указываете switch ссылку на функцию, в которой он живет, а не числовое значение.

Вы можете значительно упростить ситуацию следующим образом:

function isGreaterThan (numberOne, numberTwo) {
  return numberOne > numberTwo; //return the result of the comparison
}
0 голосов
/ 07 июня 2018

Ваша функция явно не работает должным образом, потому что вы используете switch неправильным образом.

Прежде всего, вы переключаетесь, используя саму функцию в качестве выражения

switch (isGreaterThan) {

Затем вы сравниваете его с другим выражением

 case numberOne > numberTwo:

Это эквивалент

if ( isGreaterThan == (numberOne > numberTwo))

И эта проверка никогда не будет верной, потому что isGreaterThan даже нелогическое значение, но (numberOne > numberTwo) равно

Таким образом, этот переключатель всегда будет возвращаться к оператору по умолчанию

default:
      return false;
      break;

. Поэтому эта функция всегда будет возвращать false

какКак уже упоминалось от других, ваша функция может работать в этой простой форме

function isGreaterThan (numberOne, numberTwo) {
  return numberOne > numberTwo; 
}

Теперь, если вам нужен совет, я действительно думаю, что вы не понимаете, как работает switch, поэтому, пожалуйста, сделайте шаг назади изучите как это должно работать.В этом случае не было никакой причины использовать switch.

Кстати, троичный оператор (как упомянуто в заголовке) в вашем случае работал бы как

(numberOne > numberTwo) ? true : false
0 голосов
/ 07 июня 2018

Вы можете упростить это, чтобы избежать неправильного использования оператора switch:

function isGreaterThan (numberOne, numberTwo) {
  return numberOne > numberTwo;
}
console.log(isGreaterThan(67, 2));

Ваш оператор switch неверен, так как вам нужно передать условие и оценить результат в каждом операторе case.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...