以下是我想要啓發的示例(某些實際上不起作用的示例)。Javascript中的作用域鏈,並在全局範圍內調用嵌套函數
var myVar = 2;
function a(){
var myVar = 2;
function b(){
console.log(myVar);
}
};
a();
b();
這將在控制檯輸出:Uncaught ReferenceError:b未定義。
正如你所看到的,我有一個函數名爲a與嵌套函數b。
起初,我以爲我可以調用b外一個並讓它正常工作。 我認爲這將起作用,因爲一開始我稱之爲函數。
通過這樣做,我心目中的事實功能將在執行堆棧,並在其創作階段中定義的B功能放在將在存儲器中設置。
由於這是在內存中,我認爲我可以在函數外執行此操作。這顯然不起作用。
所以我的結論是B功能在的創建階段的功能確實設置到內存,但一旦功能已完成執行,一旦它的彈出執行堆棧中,b函數同時彈出內存。
因此,在全球範圍內調用它(我的意思是b函數)是不可能的。
我對嗎?
JavaScript具有[*詞法範圍*](https://en.wikipedia.org/wiki/Scope_%28computer_science%29#Lexical_scoping)並且也適用於函數。 –