変数宣言 var , let , const

var 宣言は全てグローバル変数になる

var es5 = 0;
if (es5 === 0) {
    var es5 = 1;
    if (es5 === 1) {
        var es5 = 2;
        console.log('child', es5);  //  2
    }
    console.log('parent', es5);  //  2
}
console.log('global', es5);  //  2

const, let 宣言はブロック内のみ有効
const は宣言する時に初期値を設定しなければいけない

const es6 = 0;
if (es6 === 0) {
    const es6 = 1;
    if (es6 === 1) {
        const es6 = 2;
        console.log('child', es6);  //  2
    }
    console.log('parent', es6);  //  1
}
console.log('global', es6);  //  0