Exercise – Scope

by Zachary Ho

JavaScript

/**
 * Exercise:
 *
 * Function Scope
 *
 * Work in the console, or use "console.log()" to output to the console 
 * from the script
 *
 * You could also use console.assert(boolean) to test your functions
 *
 * Part 1: Write two functions that share the same, global variable
 * 	- Verify this by logging the value of the variable to the console 
 *    from within each function
 */

// write solution to part 1 here
var globalVar = 1;

function func1() {
  globalVar = 2;
  console.log(globalVar);
}

function func2() {
  globalVar = 3;
  console.log(globalVar);
}

//func1();
//func2();

/*
 * Part 2: Write two functions that share a non-global variable
 *  - Verify this by logging the value of the variable to the console 
 *    from within each function
 *
 *    Hint: You can write functions inside of other functions...
 */

// write solution to part 2 here
function outerFunc() {
  var inside = 1;
  console.log(inside);

  function innerFunc() {
    inside += 2;
    console.log(inside);
  }

  innerFunc();
}

//outerFunc();


/*
 * Bonus: Write a function (outer) that returns another function (inner)
 *
 * The outer function expects one Number parameter, x
 * The inner function should add 1 to x and log it to the console
 * 
 * Hint: You will need to run the outer function once
 * in order to get the inner function
 */

// write solution to bonus here
function outer(x) {
  function inner() {
    x += 1;
    console.log(x);
  }
  return inner;
}

var made = outer(1);
made();