js变量提升、函数提升详解

一、变量提升是指将变量声明提升到它所在作用域的最开始部分

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

  为什么会出现以上的结果,是因为js的变量提升,将a变量的声明提升到全局作用域的最上面部分,实际代码如下:

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

二、函数提升是指将函数声明提升到它所在作用域的最开始部分

  备注:js创建函数有两种方式,一种是函数声明和函数表达式,只有函数声明才存在函数提升

  var fn = function() {

    console.log('test')

  }

  function fn() {

    console.log('test1')
  }

  console.log(fn())  //  'test'
  
为什么会出现以上结果,是因为js的变量提升,将函数声明提到该函数作用的最上部分,实际代码如下:

  function fn() {

    console.log('test1')
  }

  var fn = function() {

    console.log('test')

  }

  console.log(fn())

猜你喜欢

转载自www.cnblogs.com/sunshinexiu/p/10016619.html