30 lines
573 B
JavaScript
30 lines
573 B
JavaScript
|
|
function closureOverBlockScope() {
|
||
|
|
let fns = [];
|
||
|
|
{
|
||
|
|
let x = 1;
|
||
|
|
fns.push(() => x);
|
||
|
|
}
|
||
|
|
{
|
||
|
|
let y = 2;
|
||
|
|
fns.push(() => y);
|
||
|
|
}
|
||
|
|
return fns[0]() + fns[1]();
|
||
|
|
}
|
||
|
|
console.log(closureOverBlockScope());
|
||
|
|
|
||
|
|
function breakThroughBlockScopes() {
|
||
|
|
let result;
|
||
|
|
outer: for (let i = 0; i < 3; i++) {
|
||
|
|
{
|
||
|
|
let x = i;
|
||
|
|
let f = () => x;
|
||
|
|
if (x > 1) {
|
||
|
|
result = f;
|
||
|
|
break outer;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return result();
|
||
|
|
}
|
||
|
|
console.log(breakThroughBlockScopes());
|