2.6 KiB

id, title, localeTitle, isRequired, challengeType, guideUrl
id title localeTitle isRequired challengeType guideUrl
a97fd23d9b809dac9921074f Arguments Optional Argumentos Opcionales true 5 https://spanish.freecodecamp.org/guide/certificates/arguments-optional

Description

Crea una función que suma dos argumentos juntos. Si solo se proporciona un argumento, entonces devuelva una función que espere un argumento y devuelva la suma. Por ejemplo, addTogether(2, 3) debe devolver 5 y addTogether(2) debe devolver una función. llamar a esta función devuelta con un solo argumento, se devolverá la suma: var sumTwoAnd = addTogether(2); sumTwoAnd(3) devuelve 5 . Si cualquiera de los argumentos no es un número válido, devuelva indefinido. Recuerda usar Read-Search-Ask si te atascas. Trate de emparejar el programa. Escribe tu propio código.

Instructions

Tests

tests:
  - text: ' <code>addTogether(2, 3)</code> debe devolver 5.'
    testString: 'assert.deepEqual(addTogether(2, 3), 5, "<code>addTogether(2, 3)</code> should return 5.");'
  - text: <code>addTogether(2)(3)</code> debe devolver 5.
    testString: 'assert.deepEqual(addTogether(2)(3), 5, "<code>addTogether(2)(3)</code> should return 5.");'
  - text: ' <code>addTogether(&quot;http://bit.ly/IqT6zt&quot;)</code> debe devolver undefined.'
    testString: 'assert.isUndefined(addTogether("http://bit.ly/IqT6zt"), "<code>addTogether("http://bit.ly/IqT6zt")</code> should return undefined.");'
  - text: ' <code>addTogether(2, &quot;3&quot;)</code> debe devolver indefinido.'
    testString: 'assert.isUndefined(addTogether(2, "3"), "<code>addTogether(2, "3")</code> should return undefined.");'
  - text: ' <code>addTogether(2)([3])</code> debe devolver indefinido.'
    testString: 'assert.isUndefined(addTogether(2)([3]), "<code>addTogether(2)([3])</code> should return undefined.");'

Challenge Seed

function addTogether() {
  return false;
}

addTogether(2,3);

Solution

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];
}