function a(){
function b(){
}
}
在上面的JavaScript代码中,在提升阶段,函数b
会被挂起吗?或者只是a
将被悬挂,因为只有功能a
在全球范围内词汇坐。关于Javascript混乱的问题
function a(){
function b(){
}
}
在上面的JavaScript代码中,在提升阶段,函数b
会被挂起吗?或者只是a
将被悬挂,因为只有功能a
在全球范围内词汇坐。关于Javascript混乱的问题
b
将在提升阶段当该函数(a
)被调用时位于其出现范围的顶部(由函数主体a
定义的范围)。
b
将不能出口到全球范围。
非常感谢,这是一个非常清晰的例子。 –
声明被悬挂在其包含范围的顶部,对于功能b
,其功能是a
。
功能b
将被悬挂到功能a
的顶部,但这就是它已经存在的地方。
而且,(根据您的代码)功能a
将被提升到全球范围的顶部。
函数的一将被提升到全局范围(在全球范围内假设这)和功能B的顶部将被提升到由函数创建的范围的顶部。
在吊装过程中的所有声明将向上移动父函数声明如下。
Ex: function fun(){
a = 10;
var c = b();
function b(){}
}
会变得像
function fun(){
var a;
var c;
function b(){};
a = 10;
c = b();
}
吊装总是发生*每个范围*。 'b'被挂起,但只有在函数作用域内,每当调用'a()'时。 – Bergi
这意味着如果我们不调用'a()','b'不会被挂起? –
这意味着如果不调用'a()',将不会出现'b',并且会有多次调用多次'b's。对于'b',你只能考虑它所在的范围'... {function b(){}} ...'(这是'a'函数体),而不是别的。 – Bergi