块级作用域
let声明的变量只在let命令所在的代码块内有效。
<!doctype html>
<html>
<head>
</head>
<body>
<script>
    {
        let a = 10;
        var b = 1;
    }
    console.log(a)  // ReferenceError: a is not defined.
    console.log(b)  // 1
</script>
</body>
</html>
不存在变量提升
// var 的情况
console.log(foo); // 输出undefined
var foo = 2;
// let 的情况
console.log(bar); // 报错ReferenceError
let bar = 2;
不允许重复声明
// 报错
function func() {
  let a = 10;
  var a ...