Lexical Closures
Closure - where a func can modify vars in the parent scope
var i = 0;
Function func = () => i++;
READ CAREFULLY
void main() {
Function func1 = () {
var a = 1;
Function func2 = () => ++a;
return func2;
};
Function func3 = func1();
print(func3()); // 2
Function func4 = func1();
print(func3()); // 3
print(func4()); // 2
}
// func4 is a new object so it references a new parent scope