ES6
js是弱类型语言,语法很松散,这是一个缺点。 之前,在js中变量声明:var。 为了解决这个缺点,js中声明变量新增两个语法:let、const var 特点有三: 变量声明提升、 可重复定义同一个名字的变量不报错、 全局变量挂载到window let和const的特性: 没有变量声明提升 不能重复声明同一个变量,即使是var过的变量,甚至是行参也不行。 声明的变量不会挂载到window上 有块级作用域的特点 在大括号 {}里边会形成临时死区 可解决闭包问题 。 [const特殊] var和let定义变量,const定义常量 let和const的特性详解 : let /const 声明的变量不会进行变量声明提升: let/const重复声明一个变量报错 。 如果这个变量已经被var过了 ,也不能再继续let /const定义了 : 延伸到函数的行参上 : 函数行参在函数内部也是相当于var了一个变量的存在。 用var定义变量覆盖行参: 但是如果在函数内部用let声明一个和行参同名的变量,就会报错: let/const声明的变量不会挂在到window上 ,var会(容易造成混乱和冲突,window上的原有属性不能随便改)。 let/const加强对作用域的控制 : 作用域就是变量的生命周期,或者说变量在哪里能够被使用。 也就说let/const能让变量的生命周期更精准 、更规范。