var 声明的变量作用域不是块级的,会扩大变量的作用域,可能造成变量污染。 let 声明的变量作用域就更精确,离开作用域变量就销毁。 const 顾名思义就是常量了。 变量作用域更加精准 不用担心变量作用域自动提升,造成上一级或全局变量值被覆盖。 举个栗子:
1 | let a = 1; |
变量作用域可控性更好 let 的作用域是根据代码块(enclosing block)来判定的,而 var 的作用域是根据函数块(function block)来判定的。这样的话,如果我们的变量都使用 let/const 来声明,那么以前的立即执行函数就不需要了,我们只要加一个代码块就好了。 举个栗子:
1 | { |
Runtime自动检查重复声明的函数并报错 在同一个作用域内不允许重复声明变量。 举个栗子:
1 | if (true) { |
Runtime会报错:Uncaught SyntaxError: Identifier ‘a’ has already been declared 有了更加清晰的作用域,我们的代码就能够更好被预测,也更好维护。 有了更容易控制的作用域可以让我们减少很多立即执行的函数。 Runtime的自动检查可以避免不必要,甚至是错误的代码声明。