一、var声明及变量提升机制
var声明,无论实际上在哪里声明,都会被当做在当前作用域顶部声明的变量,这就是变量提升机制。
二、块级声明
块级声明用于声明在指定块的作用域之外无法访问的变量。块级作用域存在于:1)函数内部 2)块中
let声明
let可以把变量的作用域限制在当前代码块中,不会被提升,通常放在封闭代码块的顶部。
禁止重声明
let不能声明一个已经有标识的变量,会抛出错误
const声明
const声明的是常量,其值不但被设定之后不可更改
三、const与let
共同点:1)都是块级标识符
2)只在当前代码块内有效
3)常量也不会被提升至作用域顶部
不同点:const是常量,不能再次赋值,而let是可以的
let和const与var的另外一个区别是他们在全局作用域中的行为:
var 被用于全局作用域时,那么就会创建一个新的全局变量作为全局对象的属性。
let和const则不会创建全局对象的属性。
****** let还有一个很大的作用,曾经让我们头疼的经典问题,for循环,经常输出最后一个值得那个问题,终于用let解决,简化了循环过程,不再使用立即调用函数表达式,就可以解决了!*******