Block Scope

by bodine30

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser.js"></script>
<script type="text/babel">
    // Demonstrates let being limited to block scope
    if (true) {
    let x = 1;
    }    
    // console.log(x);  // Error: x is not defined


    // Demonstrates var bleeding out of for loop
    for (var i=0; i<10; ++i) { console.log(i) };
                        // console.log(i);  // 10


                        // Demonstrates let not bleeding out of for loop
                        for (let i=0; i<10; ++i) { console.log(i) };
    // console.log(i);  // Error: i is not defined


    // Demonstrates explicit creation of block scope
    {
    // Demonstrates temporal dead zone
    // Note: ES6 specifies that 'let' is not hoisted,
    //   behavior may vary by transpiler
    // console.log(j);  // Error: j is not defined
    let j = 3;
    }
    // console.log(j);  // Error: j is not defined
</script>