Help with Closures

Instructions
Without running the code below, explain in your own words what the result
of each block of code will be and why.
Block 1

var b = 1;
function someFunction(number) {
 function otherFunction(input) {
 return b;
 }
 b = 5;
 return otherFunction;
}
var firstResult = someFunction(9);
var result = firstResult(2);

Block2

var a = 1;
function b2() {
 a = 10;
 return;
 function a() { }
}
b2();
console.log(a);

Block3

let i;
for (i = 0; i < 3; i++) {
 const log = () => {
 console.log(i);
 }
 setTimeout(log, 100);
}

Hello @cloudsolver72907, do you have any questions about this, as the title says Help with Closures, or are these just fun questions for the community?

I am willing to understand the logic behind these examples.