Как вернуть одну из функций между оператором ИЛИ? - PullRequest
0 голосов
/ 19 февраля 2020

Я не могу понять, когда функция 'find' будет иметь значение true или false в блоке else . Вот код:

function findSolution(target) {
  function find(current, history) {
    if(current == target) {
      return history;
    } else if (current > target) {
      return null;
    } else {
      return find(current + 5, `(${history} + 5 )`) || find(current * 3, `(${history} * 3)`);
    }
  }

  return find(1, "1");
}

console.log(findSolution(24));

1 Ответ

0 голосов
/ 19 февраля 2020

|| работает, сначала оценивая find(current + 5, `(${history} + 5 )`) и, если это истинно , это конечный результат. Если это falsy , он будет оценивать find(current * 3, `(${history} * 3)`), и независимо от того, что будет результатом, будет конечный результат, который затем возвращается.

Вы можете заменить return expra || exprb кодом без ||, используя if и привязки:

// expra and exprb can be any valid expression
// same as return expra || exprb;
const tmp = expra;  
if (tmp) {
    return tmp;
}
return exprb;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...