变量提升
通过var定义(声明)的变量,在定义语句之前就能访问到,
此时该变量的值:undefined
函数声明提升
通过function声明的函数,在之前就可以直接调用
此时该函数的值:函数定义(对象)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| var a=3 function fn(){ console.log(a) var a=4 } fn() //输出 undefined
console.log(b) //undefined 变量提升 fn2() //可调用 函数提升 var b=3 function fn2(){ console.log('fn2()') }
fn3() //不能调用,应为这是通过var声明的变量 var fn3=function (){ console.log('fn3()') }
|
1 2 3 4
| //先执行变量提升,再执行函数提升 function a(){} var a console.log(typeof a) // function
|
1 2 3 4
| if(!(b in window)){ var b =1 // 该变量是全局变量 } console.log(b) // undefined
|
1 2 3 4 5 6 7 8 9 10 11 12
| var c=1 function c(c){ console.log(c) } c(2) //报错 //相当与 var c function c(c){ console.log(c) } c=1 c(2)
|