var 与 function
- var,function 不存在块作用域
- var, function 声明时会有变量提升,function 变量提升会提到最前面(块作用域定义除外),并且初始化,var 也会提升,但赋值为 undefined
1 | console.log(v) // undefined |
let
- let 存在块作用域,定义前不允许访问
- 若 let 与 var 存在同个作用域,会报错
- 若 let 与 function 存在同个作用域,会报错;除非二者中有且只有一个,位于块作用域中;此时谁声明在块作用域内访问块作用域的,块作用域外访问块作用域外的
1 | let l = 'l' |