Аргументы дополнительные
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.
Комментариев нет:
Отправить комментарий