全局变量:函数外部定义的变量,但函数内部或者代码块中没有定义的变量也具备全局作用域,两者区别如下:
前者是全局变量,后者是全局对象window的属性(虽然都可以用window对象来访问,可以通过“变量不能被删除,属性可以被删除“来证明)
函数作用域:在函数内部定义的变量拥有局部作用域
块状作用域:在花括号中用let声明的变量具有块状作用域
动态作用域:this
let与var的区别
1、let具有块状作用于
2、var声明的全局变量能通过window的属性去访问,let声明的全局对象不可以
3、var可以重新声明变量,let不可以
4、var声明的变量有变量提升的特性,let声明的没有
const的特性
1·、const具备let的特性,但const只能定义常量(不能修改)
2、var,let都可以先声明后赋值,但const不可以
https://segmentfault.com/a/1190000020459459
https://segmentfault.com/a/1190000008972987
https://github.com/creeperyang/blog/issues/16