js变量提升
有如下代码:
console.log(a);
var a = 1
js在执行时 ,var定义的变量存在一个变量提升(即将定义提前执行了),其实按下面顺序执行:
var a;
console.log(a);
a=1;
所以执行结果是undefined
还有存在变量提升的就是function(),在执行方法时,先调用封装函数,再执行结果,即执行一下代码也不会报错:
console.log(add(2,3));
function add (a,b) {
return a+b
}
运行结果入下:
js支持变量提升和函数提升,这个提升只是一个预解析,并不是编译,ES6的let 和 const都不支持变量提升,直接报错
let a ;
console.log(a) //undefined
console.log(b); //报错,const定义变量也是一样的
let b;