1. var声明的变量会成为包含它的函数的局部变量,意味着变量在函数退出时被销毁图1,图2去掉var表明声明了一个全局变量,只要调用一次函数,则定义该变量并且在函数外部也可以访问到
图一
图二
2.var 存在变量提升
3.let声明的变量语var类似,但是let声明的变量的作用域为块级作用域,let声明的变量不存在变量提升,在全局中声明的let变量不会成为window对象的属性
4.const声明的变量时必须同时初始化变量,且修改const声明的变量会导致运行报错.
注意:const 声明的限制只适用于它指向的变量的引用。换句话说,如果 const 变量引用的是一个对象, 那么修改这个对象内部的属性并不违反 const 的限制。