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