這個問題可以在別處回答,但我當時甚至不知道如何開始尋找答案。我是JavaScript新手,所以這是一個讓我明白的難題。返回函數Chrome瀏覽器開發工具
給出下面的代碼:
function multiple(n) {
function f(x) {
return x * n;
}
return f;
}
var triple = multiple(3);
var quadruple = multiple(4);
當我通過以下到控制檯:
console.log(triple(5));
我得到了我希望,那就是15同樣地與任意數量的,它會增加三倍(如果我使用第二個功能則增加四倍)。
但是當我三重式到控制檯我得到下面的代碼:
f(x) {
return x * n;
}
應該不是控制檯返回...
f(x) {
return x * 3;
}
...自從3被編碼成功能憑藉以下代碼:
var triple = multiple(3);
你有點回答你的問題,3不是'編入'f,而是將它作爲參數傳入。控制檯只顯示它的功能來源。現在你的源代碼裏有x * 3. – pvg
這就是所謂的[closure](https://www.wikiwand.com/en/Closure_(computer_programming))。另見[「詞彙環境:共同理論」](http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environments-common-theory/) – user2683246