var 作用于 函数作用域
let 作用于 块级作用域
var 会使变量提升
let 不会使变量提升
var会使函数作用域中的变量成为windows对象
let 不会使变量成为windows对象
const 声明变量时必须初始化变量
声明后修改变量会导致运行错误
原因: const储存基本类型变量不可更改
储存的引用数据类型可以更改
基本类型变量保存在栈中
引用的数据类型保存在堆中的地址
保存变量的值实际上是引用栈的地址
只要地址不变 引用的数据类型就不变
console.log(age) //undefined
var age=12
console.log(id) //ReferenceError: Cannot access 'id' before initialization ( id 没被定义)
let id='ada'