Na to pytanie można odpowiedzieć gdzie indziej, ale nie byłem nawet pewien, jak rozpocząć wyszukiwanie odpowiedzi. Jestem nowy w JavaScript, więc ten jest dla mnie trudny do zrozumienia.Zwracanie funkcji Narzędzia do Chrome Chrome
Biorąc pod uwagę następujący kod:
function multiple(n) {
function f(x) {
return x * n;
}
return f;
}
var triple = multiple(3);
var quadruple = multiple(4);
Kiedy mijam następujących do konsoli:
console.log(triple(5));
mam co się spodziewać, czyli 15. Podobnie z dowolnej liczby, to będzie być potrojone (lub czterokrotnie, jeśli użyłem drugiej funkcji).
Ale kiedy wpisać potrójne do konsoli pojawia się następujący kod:
f(x) {
return x * n;
}
nie powinno zwrot konsoli ...
f(x) {
return x * 3;
}
... od 3 jest zakodowana w funkcja dzięki następującym kodem:
var triple = multiple(3);
Odpowiedziałeś na pytanie, 3 nie jest "zakodowane w" f, przekazujesz je jako parametr. Konsola po prostu pokazuje źródło dla funkcji, którą ma. Czy w Twoim źródle masz x * 3. – pvg
jest to tzw. [Zamknięcie] (https://www.wikiwand.com/en/Closure_ (computer_programming)). Zobacz także ["Środowiska leksykalne: teoria powszechna"] (http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lekoniki-techniczne-społeczne-theoria/) – user2683246