对Javascript吊装感到困惑

时间:2016-12-20 19:11:56

标签: javascript node.js function hoisting

function a(){
  function b(){
  }
}

在上面的javascript代码中,在提升阶段,函数b会被挂起吗?或者只是a将被提升,因为只有函数a在词汇上坐在全局上下文中。

4 个答案:

答案 0 :(得分:3)

b将被提升到它出现的范围的顶部(由函数体a定义的范围)在提升阶段,当该函数(a)是调用

b将不会导出到全局范围。

答案 1 :(得分:1)

函数a将被提升到全局范围的顶部(假设这在全局范围内),函数b将被提升到函数a创建的范围的顶部。

答案 2 :(得分:0)

声明被提升到其包含范围的顶部,函数b的函数为a

函数b将被提升到函数a的顶部,但这就是它已经存在的位置。

并且,函数a(基于您的代码)将被提升到全局范围的顶部。

答案 3 :(得分:0)

在提升过程中,所有声明都会向上移动到父函数声明之下。

Ex: function fun(){
    a = 10;
    var c = b();
    function b(){}
}

会变得像

function fun(){
 var a;
 var c;
 function b(){};
 a = 10;
 c = b();
}