变量提升

99 阅读1分钟

var可以提升变量 也是跟let的区别之一

console.log(a)//undefind
var a = 1;

代码相当于

var a ;
console.log(a)
a=1;

var只是把变量提升在最上面,但是赋值3这一步就没有提升

还有var 声明函数

console.log(fn)//type error报错了
var fn = function(){
console.log(1)
}

同上 只是变量提升了 并没有提升值

fn()//  1
function fn(){
console.log(1)
}

函数声明这样 是直接把函数提升到了最前面 包括他的值

var 会提升所有变量,包括if里面的

console.log(t)//undfind  这样也会提升
if(false){
var  t = 1;
}