1.函数声明提升与变量声明提升
- 注意是声明提升,赋值是不会提升的
- 因为变量提升的优先级 function 高于 var
- function先提升,然后var提升,但是a已经声明是个函数,不能覆盖
- 但是后来把 0 赋值给 a,就覆盖了a
function fn1(){
console.log(typeof a)
var a = 0
}
fn1() // undefined
function fn2(){
console.log(typeof a)
var a = 0
function a(){}
console.log(a)
}
fn2() // function 0
function fn3(){
console.log(typeof a)
function a(){}
var a = 0
console.log(a)
}
fn3() // function 0