A set of all objects, variables, and functions that you have access to.
Scopes are defined by functions
var firstName = "Will";
function addLastName() {
var lastName = "Gottschalk";
return firstName + " " + lastName;
}
var fullName = addLastName();
console.log(fullName) // Will Gottschalkvar firstName = "Will";
function addLastName() {
var lastName = "Gottschalk";
return firstName + " " + lastName;
}
var fullName = addLastName();
console.log(fullName);
var firstName = "Will";
function addLastName() {
var lastName = "Gottschalk";
return firstName + " " + lastName;
}
var fullName = addLastName();
console.log(fullName);
var firstName = "Will";
function addLastName(first) {
var lastName = "Gottschalk";
return first + " " + lastName;
}
var fullName = addLastName(firstName);
var anotherName = addLastName("Adam")
console.log(fullName); console.log(anotherName);
var firstName = "Will";
function addLastName() {
var lastName = "Gottschalk";
return firstName + " " + lastName;
}
console.log(firstName + lastName);
var number = 5;
function double(num) {
function add() {
return num + num;
}
var output = add();
return output;
}
var ans = double(number);
console.log(ans);
var number = 5;
function double(num) {
function add(n) {
return n + n;
}
var output = add(num);
return output;
}
var ans = double(number);
console.log(ans);
Answer these:
var number = 5;
function double(num) {
function add(n) {
return n + n;
}
var output = add(num);
return output;
}
var ans = double(number);
console.log(ans);
What if we want to return a function instead of an output?
var number = 5;
function double() {
function add(n) {
return n + n;
}
return add;
}
var returnedFunction = double();
var ans = returnedFunction(number)
console.log(ans); // 10
What if we want to return a function instead of an output?
The variables you have access to are determined by where you define your function, not where you execute you function
function initializeCount() { var count = 0; function incrementCount() { count += 1; console.log(count) } return incrementCount; } var countA = initializeCount();
var countB = initializeCount();
countA(); // 1
countA(); // 2
countB(); // 1
Each time you run a function that creates a closure, a brand new block of memory is created