1.var 定义的是变量,没有块作用域的概念,可以跨块作用域访问,不能跨函数访问
块级作用域由 { } 包括,if和for里面的{ } 也是块作用域
var有预处理机制,let没有。预处理就是常说的声明提前
2.let 定义的是变量,只能在块作用域访问,也不能跨函数访问
3.const 定义的是常量,使用的时候必须初始化 (即赋值) ,只能在 块作用域 访问, 并且不能修改
let和const不能重复声明。const定义的类型(String,Number,boolean,null,undefined)如下情况: 因为对象是引用类型的,year中保存的仅是对象的指针,这就意味着,const仅保证指针不发生改变,修改对象的属性不会改变对象的指针,所以是被允许的。也就是说const定义的引用类型只要指针不发生改变,其他的不论如何改变都是允许的。