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)

 

posted on 2020-08-31 13:56  家有糖果  阅读(119)  评论(0)    收藏  举报

导航