首页 > 代码库 > js变量提升

js变量提升

js预解析 需要注意的 JS会先检查遍历的时候先声明不赋值,这里有2点需要注意
* 1,函数声明优先于变量声明,
* 2,变量声明同级,安先后顺序执行
代码如下

alert()
a()
var a = 3;
function a(){
alert(10)
};
a=3;
alert(a);
a=6;
a()

解析如下

var a;
a=function (){alert(10)}
alert(a)
a();
a=3;
alert(a)
a=6
a()

就很容易得到结果 function(){alert(10)},10,3,a is not function


这里就要见到ES6,let const ,这2个关键字都是创建一个块级变量,且不会被提升,需要注意的的是必须要先声明。
上面的代码用ES6就变的简单很多

alert(a)
let a = 3

结果会报错,a is not defined

js变量提升