"Ten Functions" is a prepared environment for practicing introductory function writing with automated tests for feedback.
- If you want more practice working with Git and Github, fork this project on GitHub and then clone your fork to your development box, so you have both your own local copy and a remote in GitHub where you can push your solutions.
- Go here https://glitch.com/edit/#!/remix/ten-functions if you only want to focus on the problems and side-step the git process.
- Setup your own copy of the code using the instructions above
- Read the exercise prompts listed below
- Define your functions that solve the prompts inside of
solutions.js
. - Use feedback to improve responses
- Submit issues and patches to the Ten Functions project
-
The comments to the right of the function call example demonstrate the output of the function's operation on the provided input(s). Add your function definitions to
solutions.js
. Refreshresults.html
to run automated tests for feedback on your solutions. -
Define a function named
isTrue
that takes in any input and returns true if the input provided is exactly equal totrue
in value and data type.isTrue(true) // true isTrue(false) // false isTrue(0) // false isTrue(null) // false isTrue("true") // false isTrue("Banana") // false isTrue([1, 2]) // false
-
Define a function named
isFalse
that takes in a value and returns a true if and only if the provided input is equal to false in both type and value.isFalse(false) // true isFalse(true) // false isFalse(0) // false isFalse(null) // false isFalse("") // false isFalse("Banana") // false isFalse([1, 2]) // false
-
Define a function named
not
that takes in any input and returns the boolean opposite of the provided input.not(false) // true not(0) // true not("") // true not(null) // true not(NaN) // true not(undefined) // true not(true) // false not("something") // false not(Infinity) // false not(123) // false
-
Define a function named
addOne
that takes in a single input. If the input is a number or a numeric string, return the value plus one.addOne(0) // 1 addOne(2) // 3 addOne(-5) // -4 addOne(5.789) // 6.789 addOne(Infinity) // Infinity addOne("2") // 3 addOne("0") // 1 addOne("banana") // NaN addOne(true) // NaN addOne(NaN) // NaN
-
Define a function named
isEven
that takes in a single input. If the input is an even number or a string containing an even number, returntrue
. Any other input should return false for the output.isEven(2) // true isEven(-8) // true isEven(0) // true isEven("42") // true isEven(1) // false isEven("-3") // false isEven(false) // false isEven("banana") // false
-
Define a function named
isIdentical
that takes in two input arguments. If each input is equal both in data type and in value, then returntrue
. If the values are not the same data type or not the same value, returnfalse
.isIdentical(3, 3) // true isIdentical(false, false) // true isIdentical("hello", "hello") // true isIdentical(3, 3.0) // true isIdentical(undefined, undefined) // true isIdentical(2, "2") // false isIdentical("javascript", "java") // false
-
Define a function named
isEqual
that takes in two input arguments. If each argument is equal only in value, then return true. Otherwise return false.isEqual(3, "3") // true isEqual("abc123", "abc123") // true isEqual(true, 1) // true isEqual(0, false) // true isEqual(4, -5) // false isEqual("java", "javascript") // false
-
Define a function named
or
that takes in two input arguments. The output returned should be the result of anor
operation on both inputs.or(true, true) // true or(true, false) // true or(false, true) // true or(false, false) // false or("hello", "world") // "hello" (this behavior is non-obvious, research more!)
-
Define a function named
and
that takes in two input arguments and returns the result of a logicaland
operation of both inputs.and(true, true) // true and(true, false) // false and(false, true) // false and(false, false) // false and("hello", "world") // "world" (this behavior is non-obvious, research more)
-
Define a function named
concat
that takes in two input arguments. If both arguments are strings, then return the concatenated result. If two numbers are provided, then return the string concatenation of each set of numerals.concat("code", "up") // "codeup" concat("connect", 4) // "connect4" concat("hello", "world") // "helloworld" concat(4, 2) // "42" concat(true, true) // "truetrue"
index.html
is the welcome pageresults.html
shows the ouptut from automated test datasolutions.js
is where you will write your function definitions that solve the exercises belowtests.js
is the suite of automated tests that call your functions insolutions.js
with different inputs.
Consider this example problem.
Write a function called
isBoolean
that takes in a value and returns a boolean if the argument provided is a boolean value or not.
-
isBoolean("Dog")
should returnfalse
because a string is not a boolean -
isBoolean(false)
should returntrue
because only true and false are boolean values. -
When a problem says
return
, it meansreturn
, notconsole.log
. -
When a problem says that a function will take in an input, then it means the function must be defined so that it takes in an argument as its input, rather than relying on variables defined outside the function.
The following example is incorrect because the function does not take in an argument. It's modifying a global variable, and that is not the same as accepting an input as an argument.
var input = "Grace Hopper"
function isBoolean() {
return typeof input == "boolean";
}
This is incorrect because the function doesn't return the output. Functions that do not have an explicit return
statement return undefined
by default.
function isBoolean(input) {
console.log(typeof input == 'boolean');
}
Correct solution:
function isBoolean(input) {
return typeof input == "boolean";
}
- Proudly hosted and edited on Glitch! 🎏
- Testing framework: Jasmine
- Made by Ryan Orsinger
\ ゜o゜)ノ