变量提升 A、js 代码执行的过程
1 变量提升
2 代码从上到下依次执行
var 关键字和 function 关键字声明的变量会进行变量提升
B、变量提升发生的环境:发生在代码所处的当前作用域。
变量提升
1 var 关键字进行的变量提升,会把变量提前声明,但是不会提前赋值 。
2 function 关键字对变量进行变量提升,既会把变量提前声明,又会把变量提前赋值,也就是把整个函数体提升到代码的顶部
3 有一些代码是不会执行的但是仍旧会发生变量提升,规则适用于 1,2
3.1 return 之后的代码依旧会发生变量提升,规则适用于 1,2
3.2 代码报错之后的代码依旧会发生变量提升,规则适用于 1,2
3.3 break 之后的代码依旧会发生变量提升,规则适用于 1,2
4 有一些代码是不会执行但是仍旧会发生变量提升,但是规则要发生变化
4.1 if 判断语句 if 判断语句中 var 关键字以及 function 关键字声明的变量只会发生提前声明,不会发生提前赋值,也就是不会吧函数体整体提升到当前作用域顶部。规则跟 1,2 不适用
4.2 switch case 规则跟 1,2 不适用
4.3 do while 规则跟 1,2 不适用
4.4 try catch catch 中声明的变量只会发生提前声明,不会发生提前赋值。
Ps:在条件判断语句和 try catch 中的声明的变量不管是否能够执行,都只会发生提前 声明,不会发生提前赋值。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。