- 变量提升只对等号左边的进行提升,右边是值不会进行提前声明
- 不管条件是否成立,判断体当中出现的var、function都会进行变量提升;function声明的变量只能提前声明不能进行定义(前提函数实在判断体中)
- 代码执行到条件判断的地方
- 条件不成立;进入不到判断体当中,此时之前声明的变量或者函数依然是undefine
- 条件成立:进入条件判断体中第一件事情不是代码执行而是把之前变量提升没有进行定义的函数首先定义了(进入到判断体,把函数先定义了)
- 代码
console.log(num);//undefineconsole.log(fn);//undefinedif (1 ==1){ ?console.log(num);//undefined ?console.log(fn);//→函数体本身 ?var num = 12; ?function fn(){ ????} ?console.log(fn); ?console.log(num); ?//→函数体本身}console.log(fn); //→函数体本身
- 重名 会进行重新的声明和定义
JS变量提升补充
原文地址:https://www.cnblogs.com/endian11/p/9095462.html