JS The Execution Context
JS The Execution Context
Foundations
Important Fundamental
Concepts
All code in
Javascript is
executed inside an
Execution
context
The Global
Environment & the Global Object
Variable Environment
Execution context
1 Whenever a code runs in JavaScript, it runs inside an Execution
context.
2 The execution context is a wrapper to help manage the
code that is running.
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar); sayAge()’s execution context
}
Variable Environment
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar); sayAge()’s execution context
}
Variable Environment
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar); sayAge()’s execution context
}
Variable Environment
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar); sayAge()’s execution context
}
Variable Environment
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function sayAge() {
myVar = 36;
console.log('Age: ', myVar);
}
sayAge();
}
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 1
The creation phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname; execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: undefined
}
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 1
The creation phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname; execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: undefined
} lastName: undefined
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 1
The creation phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname; execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: undefined
} lastName: undefined
function getFullName() { … }
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 1
The creation phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname; execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: undefined
} lastName: undefined
function getFullName() { … }
getFirstName: undefined
var fullName = getFullName();
console.log(fullName);
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 1
The creation phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname; execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: undefined
} lastName: undefined
function getFullName() { … }
getFirstName: undefined
var fullName = getFullName(); getLastName: underfined
console.log(fullName);
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 1
The creation phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname; execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: undefined
} lastName: undefined
function getFullName() { … }
getFirstName: undefined
var fullName = getFullName(); getLastName: underfined
console.log(fullName); fullName: undefined
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 2
The Execution phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname;
execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: ‘Vivek’
} lastName: undefined Executes your
function getFullName() { … } code line by
getFirstName: undefined line
var fullName = getFullName(); getLastName: underfined
console.log(fullName); fullName: undefined
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 2
The Execution phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname;
execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: ‘Vivek’
} lastName: ‘Agarwal’ Executes your
function getFullName() { … } code line by
getFirstName: undefined line
var fullName = getFullName(); getLastName: underfined
console.log(fullName); fullName: undefined
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 2
The Execution phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname;
execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: ‘Vivek’
} lastName: ‘Agarwal’ Executes your
function getFullName() { … } code line by
getFirstName: undefined line
var fullName = getFullName(); getLastName: underfined
console.log(fullName); fullName: undefined
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 2
The Execution phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname;
execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: ‘Vivek’
} lastName: ‘Agarwal’ Executes your
function getFullName() { … } code line by
getFirstName: function() { … } line
var fullName = getFullName(); getLastName: underfined
console.log(fullName); fullName: undefined
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 2
The Execution phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname;
execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: ‘Vivek’
} lastName: ‘Agarwal’ Executes your
function getFullName() { … } code line by
getFirstName: function() { … } line
var fullName = getFullName(); getLastName: function() { … }
console.log(fullName); fullName: undefined
var firstName = 'Vivek';
var lastName = 'Agarwal’;
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
PHASE - 2
The Execution phase of the Global
var lname = getLastName();
var fullName = fname + ' ' + lname;
execution context
return fullName;
}
}
return firstName; Global execution context
Variable Environment
var getLastName = function() {
return lastName; firstName: ‘Vivek’
} lastName: ‘Agarwal’ Executes your
function getFullName() { … } code line by
getFirstName: function() { … } line
var fullName = getFullName(); getLastName: function() { … }
console.log(fullName); fullName: return value of getFullName()
var firstName = 'Vivek';
var lastName = 'Agarwal’;
PHASE - 1
The Creation phase of the getFullName()’s execution context
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined
} lastName: undefined
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined
} lastName: undefined
fname: undefined
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined
} lastName: undefined
fname: undefined
lname: undefined
var getFirstName = function() {
return firstName;
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined
} lastName: undefined
fname: undefined
lname: undefined
var getFirstName = function() { fullName: undefined
return firstName;
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined
} lastName: undefined
fname: undefined
lname: undefined
var getFirstName = function() { fullName: undefined
return firstName;
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: undefined Executes your
} lastName: undefined code line by
fname: undefined line
lname: undefined
var getFirstName = function() { fullName: undefined
return firstName;
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: ‘Akash’ Executes your
} lastName: undefined code line by
fname: undefined line
lname: undefined
var getFirstName = function() { fullName: undefined
return firstName;
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: ‘Akash’ Executes your
} lastName: ‘Sharma’ code line by
fname: undefined line
lname: undefined
var getFirstName = function() { fullName: undefined
return firstName;
}
function getFullName() {
var firstName = 'Akash’; getFullName()’s execution context
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName(); Variable Environment
var fullName = fname + ' ' + lname;
return fullName; firstName: ‘Akash’ Executes your
} lastName: ‘Sharma’ code line by
fname: return value of getFirstName() line
lname: undefined
var getFirstName = function() { fullName: undefined
return firstName;
}
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName();
var fullName = fname + ' ' + lname;
return fullName;
}
getFullName()’s execution context
var getFirstName = function() {
return firstName; Variable Environment
} Executes your
firstName: ‘Akash’
lastName: ‘Sharma’ code line by
fname: ‘Vivek’ line
var getLastName = function() {
lname: return value of getLastName()
return lastName;
fullName: undefined
}
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName();
var fullName = fname + ' ' + lname;
return fullName;
}
getFullName()’s execution context
var getFirstName = function() {
return firstName; Variable Environment
}
firstName: ‘Akash’
lastName: ‘Sharma’ Executes your
fname: ‘Vivek’ code line by
var getLastName = function() { line
lname: ‘Agarwal’
return lastName;
fullName: undefined
}
function getFullName() {
var firstName = 'Akash’;
var lastName = 'Sharma’;
var fname = getFirstName();
var lname = getLastName();
var fullName = fname + ' ' + lname;
return fullName;
}