JS - Closures Lab - SOLUTION
by Ryan Morris
JavaScript
/**
* Month names function
*
* Using a closure, write a function that will
* return the Month name for a given number (1-12).
*
* Hint: Your function will include an array of month names
* Hint: It will return a function
*
*/
var monthName = (function(){
var month_names = ["January", "February", "March"]; // lazy...
return function (n) {
return month_names[n-1];
}
})();
console.log(monthName(1)); // -> January
/**
* Bonus:
*
* Set a timer to run your function 12 times, once each second
* It should use the increment of a loop to log the month name
* that maps to the integer value
*
* Example output, one line per second:
* "January"
* "February"
* "March"
* ...
*
* Hint: You'll use setTimeout(function, i*1000);
* Hint: You'll need an additional scope to pass "i" correctly
* in to the timer function
*/
for (var i=1; i<=12; i++) {
(function(j) {
setTimeout(function() {
console.log(monthName(j));
}, i*1000);
})(i);
}