var、function 定义变量特点
- 存在变量提升
- 可以重复声明
- 全局作用域下 var声明的变量,会在window对象上增加一个属性
let和const定义变量特点
- 没有变量提升
- 不能重复声明
- 不会再window对象上增加属性
- const定义的变量,一旦声明必须赋值
- const定义的是一个常量,不可以重新赋值
检测对象上是否存在某个属性的方法
- window.属性名
- "属性名" in window
块级作用域下
- var和function声明的变量依然是全局的,可以在块级作用域外获取
- let和const声明的变量是私有的,只能在会计作用域中使用