Forked from anonymous/bonfire-arguments-optional.js
Created
December 3, 2015 19:26
-
-
Save nirajkrz/12d8ad15ed2a7f486088 to your computer and use it in GitHub Desktop.
http://www.freecodecamp.com/nirajkrz 's solution for Bonfire: Arguments Optional
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Bonfire: Arguments Optional | |
// Author: @nirajkrz | |
// Challenge: http://www.freecodecamp.com/challenges/bonfire-arguments-optional | |
// Learn to Code at Free Code Camp (www.freecodecamp.com) | |
function add() { | |
// Function to check if a number is actually a number | |
// and return undefined otherwise. | |
var checkNum = function(num) { | |
if (typeof num !== 'number') { | |
return undefined; | |
} else | |
return num; | |
}; | |
// Check if we have two parameters, check if they are numbers | |
// handle the case where one is not | |
// returns the addition. | |
if (arguments.length > 1) { | |
var a = checkNum(arguments[0]); | |
var b = checkNum(arguments[1]); | |
if (a === undefined || b === undefined) { | |
return undefined; | |
} else { | |
return a + b; | |
} | |
} else { | |
// If only one parameter was found, returns a new function that expects two | |
// Store first argument before entering the new function scope | |
var c = arguments[0]; | |
// Check the number again, must be outside the function to about returning an object | |
// instead of undefined. | |
if (checkNum(c)) { | |
// Return function that expect a second argument. | |
return function(arg2) { | |
// Check for non-numbers | |
if (c === undefined || checkNum(arg2) === undefined) { | |
return undefined; | |
} else { | |
// if numbers then add them. | |
return c + arg2; | |
} | |
}; | |
} | |
} | |
} | |
add(2,3); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment