函数的提拔

我们晓得,关于一切的变量,不管在函数体的什么处所声明,都邑在背景被提拔到函数体顶部。

这个划定规矩关于函数一样实用,其缘由在于函数只是分配给变量的对象。唯一须要引发注重的处所在于当实用函数声明时,函数定义也会被提拔,而不仅仅是函数声明被提拔。看下面的代码:

function test() {
  console.log(typeof foo);   // "function"
  console.log(typeof bar);   // "undefined"

  function foo() {

  }

  var bar = function () {

  };
}

test();

test()函数中的foobar的声明被提拔到了顶部;同时,须要注重的是:foobar的区分在于前者的定义得到了提拔,而后者的定义没有提拔,这也就是console.log(typeof bar)输出undefined的缘由。

所以,须要记着的是:函数表达式仅仅是变量被提拔,而函数的完成没有被提拔。
上面的代码中,背景剖析的代码类似于:

function test() {
  var bar;
  function foo() {

  }
  console.log(typeof foo);   // "function"
  console.log(typeof bar);   // "undefined"

  var bar = function () {

  };
}

test();
    原文作者:MockingBird
    原文地址: https://segmentfault.com/a/1190000002876700
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞