ES6之前创建变量用的都是var,之后创建变量用的都是let/const。
var定义的变量没有块的概念,可以跨块访问,不能跨函数访问;let定义的变量只能在块作用域里访问,不能跨块访问,也不能跨函数访问;const用来定义常量,使用时必须初始化,只能在块作用域里面访问,且不能修改。
var可以先使用后声明,因为存在变量提升;let必须先声明后使用。
var允许在相同作用域内重复声明同一个变量,而let与const不允许。
在全局上下文中,基于let声明大的全局变量和全局对象GO(window)没有任何关系。
let、const、function会把当前所在大括号(除函数之外)作为一个全新的块级上下文,应用这个机制在开发项目的时候,遇到循环事件绑定等类似需求,无需自己再构建闭包来存储,只要基于let的块作用特征即可解决。