var的作用域规则可能会引发一些错误:
因为var声明可以在包含它的函数,模块,命名空间甚至是全局作用域内部任何位置被访问;
使用var多次声明同一个变量也不会报错,无论声明多少个var,只会得到一个,并且所有的变量共用同一块内存
var使用的作用域是var作用域or函数作用域,var声明的变量可以在函数外访问
let使用的作用域是块作用域or词法作用域,let声明的变量不能在函数外访问
const与let相似,但是const表示常量,let表示变量;即const声明并赋值后无法再次被赋值
依据最小特权原则,所有变量除了计划去修改的都应该使用const