Работа волхвов c с аргументами - но только если они являются числами (алгоритм Javascript) - PullRequest
0 голосов
/ 25 апреля 2020

Вопрос

Создайте функцию, которая суммирует два аргумента вместе. Если указан только один аргумент, вернуть функцию, которая ожидает один аргумент и возвращает сумму.

Например, addTogether (2, 3) должна вернуть 5, а addTogether (2) должна вернуть функцию.

Вызов этой возвращенной функции с одним аргументом вернет сумму:

var sumTwoAnd = addTogether (2);

sumTwoAnd (3) возвращает 5.

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

Что я пытался

function addTogether(a, b) {

if(typeof(a) !== 'number'){
return undefined;
}

if(arguments.length == 2){
 let tim = arguments[0] + arguments[1];
 if(!tim.isNaN){
   return tim;

 }
}

else if(arguments.length == 1){

  return function(a, c){

let result = c + a;
if(!result.isNaN){
  return result;
}

  }

}

}

addTogether(2,3);

console.log(addTogether(2)([3]))

console.log(addTogether(2),(3))

Сбой следующих Console.logs

addTogether (2) (3) должен вернуть 5.

addTogether (2, «3») должен возвращать undefined.

addTogether (2) ([3]) должен возвращать undefined.

Что бы я хотел знать

  1. Как исправить мой код?
  2. Как бы вы это сделали?

1 Ответ

2 голосов
/ 25 апреля 2020

Вам нужно проверить все аргументы как числа. Сначала вы делаете это правильно, с помощью typeof a !== 'number', но вам нужно делать это и везде - и при проверке b, если указан второй параметр, и при возврате функции, если второй параметр не указан. .

Чтобы вернуть функцию, просто используйте return (b) => { // logic }:

function addTogether(a, b) {
  if (typeof a !== 'number') {
    return;
  }
  if (arguments.length >= 2) {
    if (typeof b !== 'number') {
      return;
    }
    return a + b;
  }
  // then a is the only argument
  return (b) => {
    if (typeof b !== 'number') {
      return;
    }
    return a + b;
  };
}

console.log(addTogether(2, 3));
console.log(addTogether(2)(3));
console.log(addTogether('foo'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...