js-变量提升和函数提升
1.变量声明提升:
通过var定义(声明)的变量,在定义语句之前就能够访问的到值:undefined
var a = 1
function fn () {
console.log(a)
var a = 4
}
fn()
输出:undefined
相当于这样写:
function fn () {
var a
console.log(a)
a = 4
}
2.函数声明提升
通过function声明的函数,可以在声明之前就调用
fn() // 可调用,函数提升
fn1() //不能调用 变量提升
function fn () {
console.log(123)
}
var fn1 = function () {
console.log(456)
}
实例1:先执行变量提升,再执行函数提升
function a () {}
var a
console.log(typeof a)
结果:function
实例2:
if (!(b in window)) {
var b = 1
}
console.log(b) // undefined
实例3:
var c = 1
function c (c) {
console.log(c)
}
c(2)
结果:

相当于:
var c
function c (c) {
console.log(c)
}
c = 1
c(2)
浙公网安备 33010602011771号