--- id: a97fd23d9b809dac9921074f title: Arguments Optional isRequired: true challengeType: 5 forumTopicId: 14271 localeTitle: Аргументы Дополнительно --- ## Description
Создайте функцию, которая суммирует два аргумента вместе. Если предоставляется только один аргумент, тогда возвращаем функцию, которая ожидает один аргумент и возвращает сумму. Например, addTogether(2, 3) должен возвращать 5 , а addTogether(2) должен возвращать функцию. Вызов этой возвращенной функции с помощью одного аргумента будет возвращать сумму: var sumTwoAnd = addTogether(2); sumTwoAnd(3) возвращает 5 . Если какой-либо аргумент не является допустимым числом, возвращайте undefined. Не забудьте использовать Read-Search-Ask, если вы застряли. Попробуйте подключить программу. Напишите свой собственный код.
## Instructions
## Tests
```yml tests: - text: addTogether(2, 3) should return 5. testString: assert.deepEqual(addTogether(2, 3), 5); - text: addTogether(2)(3) should return 5. testString: assert.deepEqual(addTogether(2)(3), 5); - text: addTogether("http://bit.ly/IqT6zt") should return undefined. testString: assert.isUndefined(addTogether("http://bit.ly/IqT6zt")); - text: addTogether(2, "3") should return undefined. testString: assert.isUndefined(addTogether(2, "3")); - text: addTogether(2)([3]) should return undefined. testString: assert.isUndefined(addTogether(2)([3])); ```
## Challenge Seed
```js function addTogether() { return false; } addTogether(2,3); ```
## Solution
```js function addTogether() { var a = arguments[0]; if (toString.call(a) !== '[object Number]') return; if (arguments.length === 1) { return function(b) { if (toString.call(b) !== '[object Number]') return; return a + b; }; } var b = arguments[1]; if (toString.call(b) !== '[object Number]') return; return a + arguments[1]; } ```