SOURCE

console 命令行工具 X clear

                    
>
console
//let 不允许在相同作用域内重复声明同一个变量。
function func(arg) {
    // let arg
    {
        let arg
    }
    
}

// 块级作用域
//场景一
//以下代码的原意是, if 代码块的外部使用外层的 tmp 变量,内部使用内层的 tmp 变量。
//但是,函数 执行后,输出结果为 undefined ,原因在于变量提升导致内层的 tmp 变量覆盖
//了外层的 tmp 变量。
var tmp = new Date();
function f() {
    console.log(tmp);
    if (false) {
        var tmp = 'hello';
    }
}
f() //undefined
//场景二
//下面的代码中,变量 只用来控制循环,但是循环结束后,它并没有消失,而是泄露成了
//全局变量。
var s = 'hello';
for(var i=0; i<s.length; i++) {
    console.log(s[i])
}
console.log(i)