Niklaus Wirth

Niklaus Wirth

Translate

Аргументы дополнительные (20) Arguments Optional

Аргументы дополнительные
20-ый день программы "#100 Days Of Code"

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


For example, addTogether(2, 3) should return 5, and addTogether(2) should return a function.
Calling this returned function with a single argument will then return the sum:
var sumTwoAnd = addTogether(2);
sumTwoAnd(3) returns 5.

Далее создадим переменную для результата и начинаем создание условий "Если"

Если длина всего псевдомассива аргументов три и менее, то первый аргумент будет равен первой переменной а второй - другой. Создали эти переменные.

Честно говоря, я посмотрел в результаты, которые будет принимать и отдавать наша функция и немножко поленился делать проверку на !isNaN(), но ниже я приведу решение полностью

Теперь нам на помощь приходит typeof(). Проверяем, является ли второй аргумент числом и если да, то проверим и второй. Если оба - числа, то вернем их сумму.

Иначе, если второй аргумент не определен, а первый это число, то вернем функцию (как по условию задания), которая заведомо вернет undifened

Предложены ссылки:



function addTogether() {
  var results;
  if(arguments.length <=3){
    var a1 = arguments[0];
    var a2 = arguments[1];
    if(typeof(a2)==='number'){
      if(typeof(a1) ==='number'){
      
        results = a1 +a2;
      }
    } else if(a2===undefined && typeof(a1)==='number'){
      return function(a2){
        if(typeof(a2)==='number'){
          return a1 + a2;
        }
        else return results;
      };
    }
  }
  return results;
}

addTogether(2,3);



С проверкой на NaN


unction addTogether() {
  var response;
  if (arguments.length <= 3) { 
    var a = arguments[0];
    var b = arguments[1];
    if (!isNaN(b) && typeof(b) === 'number') { 
      if (!isNaN(a) && typeof(a) === 'number') {
        response = a + b;
      } 
    } else if (b === undefined && typeof(a) === 'number') {
      return function(b) {
        if (!isNaN(b) && !isNaN(a) && typeof(b) === 'number' && arguments.length === 1) { return a + b; }
        else return response;
      };
    }
  }  
  return response;
}

addTogether(2)(3);

Ответы:

convertHTML("abc")
return abc.



addTogether(2, 3)
return 5.

addTogether(2)(3)
return 5.

addTogether("http://bit.ly/IqT6zt")
return undefined.

addTogether(2, "3")
return undefined.

addTogether(2)([3])
return undefined.


Комментариев нет:

Отправить комментарий