变量提升是什么
js 中的变量提升,其实是对变量的声明进行提升,也就是将变量的声明(不包括赋值)提升到其所在作用域的顶部。
全局作用域的变量提升
- 使用 var 修饰的全局变量会被变量提升
- 没有使用 var 修饰的全局变量不会被提升,变量必须在声明后才能使用,否则会报错
1 | //使用 var 修饰的全局变量会被变量提升 |
1 | //没有使用var修饰的全局变量不会被提升,变量必须在声明后才能使用,否则会报错 |
局部作用域的变量提升
- 局部作用域的变量声明会被提升到作用域顶部
1 | //局部作用域的变量声明会被提升 |
块级作用域的变量提升
- 块级作用域不会进行变量提升,变量的使用必须在声明之后,否则会报错
1 | //块级作用域不会进行变量提示,变量的使用必须在声明之后,否则会报错 |
总结
1、局部变量、使用 var 声明的全局变量 会被提升
2、块级变量、没有使用 var 声明的全局变量 不会被提升