-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfunctions.js
More file actions
58 lines (46 loc) · 2.11 KB
/
functions.js
File metadata and controls
58 lines (46 loc) · 2.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// ==== Callbacks ====
console.log(`****** Callbacks ******`);
/* Step 1: Create a higher-order function that accepts a callback
* Create a higher-order function named consume that can take 3 parameters.
* The first two parameters can accept any argument
* The last parameter accepts a callback
* In the body of the function return the callback with the two parameters that you created
*/
let consume = (arg1, arg2, callback) => callback(arg1, arg2);
/* Step 2: Create several functions to callback with consume();
* Create a function named add that returns the sum of two numbers
* Create a function named multiply that returns the product of two numbers
* Create a function named greeting that accepts a first and last name and returns "Hello first-name last-name, nice to meet you!"
*/
let add = (arg1, arg2) => arg1 + arg2;
let multiply = (arg1, arg2) => arg1 * arg2;
let greeting = (first, last) => `Hello ${first} ${last}, nice to meet you!`;
/* Step 3: Check your work by un-commenting the following calls to consume(): */
console.log(consume(2, 2, add)); // 4
console.log(consume(10, 16, multiply)); // 160
console.log(consume('Mary', 'Poppins', greeting)); // Hello Mary Poppins, nice to meet you!
// ==== Closures ====
console.log(`****** Closures ******`);
// Explain in your own words why `nestedfunction()` can access the variable `internal`.
/*
The scope of external is global, the scope of internal is function, so anything inside the function can access it, however once you are out of the scope of the function you cannot have access to internal.
*/
// Explanation:
const external = "I'm outside the function";
function myFunction() {
console.log(external);
const internal = "Hello! I'm inside myFunction!";
function nestedFunction() {
console.log(internal);
}
nestedFunction();
}
myFunction();
/*
now that we are out of the scope, let's see what happens if we try to log external then internal
*/
console.log(external);
// well that worked well, still in global scope
//console.log(internal);
// hmm... Uncaught ReferenceError: internal is not defined
// yeah, not in scope, I guess i'll comment this out