Zastanawiam się, czy JavaScript obsługuje pisanie funkcji w ramach innej funkcji lub funkcji zagnieżdżonych (czytałem ją na blogu). Czy to naprawdę możliwe? W rzeczywistości użyłem tych, ale nie jestem pewien tej koncepcji. Naprawdę nie jestem pewien - proszę o pomoc!Czy możesz napisać funkcje zagnieżdżone w JavaScript?
Odpowiedz
Czy to naprawdę możliwe.
Tak.
function a(x) { // <-- function
function b(y) { // <-- inner function
return x + y; // <-- use variables from outer scope
}
return b; // <-- you can even return a function.
}
console.log(a(3)(4));
Poniższy tekst jest nieprzyjemny, ale służy do zademonstrowania, jak można traktować funkcje, jak każdy inny obiekt.
var foo = function() { alert('default function'); }
function pickAFunction(a_or_b) {
var funcs = {
a: function() {
alert('a');
},
b: function() {
alert('b');
}
};
foo = funcs[a_or_b];
}
foo();
pickAFunction('a');
foo();
pickAFunction('b');
foo();
doskonałym przykładem. Dodam, że ważne jest, aby pamiętać, że funkcje zdefiniowane w innych funkcjach istnieją tylko w tym zakresie funkcji (chyba że, oczywiście, przypisujesz do niego funkcję globalną, jak w tym przykładzie). –
Traktuj te funkcje jak obiekty, które są –
Funkcje są klasy obiektów pierwszymi, które mogą być:
- zdefiniowana w swojej funkcji
- Utworzony tak jak każda inna zmienna lub obiektu w dowolnym punkcie swojej funkcji
- Powrócono z funkcji (co może wydawać się oczywiste po dwóch powyższych, ale nadal)
Aby zbudować na przykładzie podanym przez Kenny:
function a(x) {
var w = function b(y) {
return x + y;
}
return w;
};
var returnedFunction = a(3);
alert(returnedFunction(2));
ostrzeże cię 5.
Ta metoda nazywa się curry. – Yekver
nie tylko można wrócić do funkcji które przeszły do innej funkcji jako zmienna, możesz również użyć go do obliczeń wewnątrz, ale definiując go na zewnątrz. Zobacz ten przykład:
function calculate(a,b,fn) {
var c = a * 3 + b + fn(a,b);
return c;
}
function sum(a,b) {
return a+b;
}
function product(a,b) {
return a*b;
}
document.write(calculate (10,20,sum)); //80
document.write(calculate (10,20,product)); //250
używam tego z ajaxem – jscripter
Tak, można pisać i wywoływać funkcję zagnieżdżoną w innej funkcji.
Spróbuj tego:
function A(){
B(); //call should be B();
function B(){
}
}
- 1. Czy możesz dziedziczyć funkcje prywatne w JavaScript?
- 2. Funkcje zagnieżdżone Javascript
- 3. Javascript - Argumenty Vs Funkcje zagnieżdżone Vs Wydajność
- 4. Czy mogę uruchomić lepiej zagnieżdżone funkcje?
- 5. Wzorzec modułu JavaScript, funkcje zagnieżdżone i moduły podrzędne
- 6. Czy możesz napisać od/3 w czystym prologu?
- 7. Jak napisać zagnieżdżone zapytania w klauzuli SELECT
- 8. Czy nazwane funkcje lub anonimowe funkcje są preferowane w JavaScript?
- 9. Funkcje zagnieżdżone: Niewłaściwe korzystanie z efektów ubocznych?
- 10. Zagnieżdżone funkcje agregujące z grupowaniem w postgresql
- 11. Zagnieżdżone miksy lub funkcje w SASS
- 12. zagnieżdżone funkcje sys.parent i środowisk w R
- 13. Czy nazwane funkcje są niedoceniane w JavaScript?
- 14. W JavaScript, możesz rozszerzyć DOM?
- 15. Funkcje prywatne w JavaScript
- 16. Czy możesz napisać przekierowanie 301 do punktu kontrolnego?
- 17. Jak napisać kod śledzenia javascript?
- 18. JavaScript zagnieżdżone try wyjątek
- 19. Platforma Haskella: funkcje zagnieżdżone i optymalizacja
- 20. Czy funkcje JavaScript tail-call są zoptymalizowane?
- 21. Głębokie funkcje zagnieżdżania w JavaScript
- 22. Expose dart funkcje javascript
- 23. rekurencyjnie złączenie javascript funkcje argumenty
- 24. Czy funkcje wielomianów mogą wykorzystywać funkcje stałoprzecinkowe?
- 25. Jak napisać zapytanie zagnieżdżone w rubinach na szynach?
- 26. Czy możesz dodać priorytety do wywołań AJAX
- 27. Czy mogę napisać skrypty dla hubota w JavaScript?
- 28. Czy można napisać do konsoli mongodb w wykonaniu javascript?
- 29. Czy możesz napisać kod Java, aby sprawdzić lokalną wersję Internet Explorera
- 30. JavaScript Object.create - dziedziczenie zagnieżdżone właściwości
Ta metoda nazywa się curry. – Yekver
Woh! Potrzebuję sedacji po zobaczeniu tego! –