Function Scopes Javascript

var num1 = 20,
	num2 = 3,
	name = "Chaitanya";

function multiply() {
	return num1 * num2;
}

console.log(multiply()); // Returns 60



// A nested function example
function getScore() {
	var num1 = 2,
		num2 = 3; // these will shadow the global num1 & num2 variables

	function add() {
		return name + " scored " + (num1 + num2); // name from global scope
	}

	return add;
}

console.log(getScore()()); // Returns "Chaitanya scored 5"

What will be the output of the following code?

#doubt

for (let i = 0 ; i < 5 ; i++) {
	setTimeout(function() {
		console.log(i);
	}, i*1000);
}

// output: (because let is block scoped)
// 0
// 1
// 2
// 3
// 4

for (var i = 0 ; i < 5 ; i++) {
	setTimeout(function() {
		console.log(i);
	}, i*1000);
}

// output: (because var is function scoped)
// 5
// 5
// 5
// 5
// 5