當我有一些函數使用其封閉範圍中的變量並在該範圍之外使用該函數(這些範圍)時,這稱爲閉包。它的封閉範圍有多少(javascript)閉包關閉?
是否有關於函數必須關閉的封閉範圍「多少」的任何規範? (?或者,換句話說,在 「怎麼少」 這是絕對需要關閉)
考慮:
function Outer() {
var bigGuy = createSomethingHuge();
var tinyNumber = 42;
return (function() { /* CONTENTS */ });
}
甚至:
function Layer1() {
var bigOne = somethingHugePlease();
var Layer2 = function() {
var bigToo = morePlease();
var Layer3 = function() {
var huge = reallyHuge();
var tiny = 42;
return (function() { /* CONTENTS */ });
};
return Layer3();
};
return Layer2();
}
哪這些變量做最後的返回功能關閉了?它取決於最終功能的內容(eval
...?)嗎?
我最關心的是這些情況是否存在某種規範,而不是關於某些特定實現的行爲。