Me pregunto si JavaScript admite escribir una función dentro de otra función, o funciones anidadas (Lo leí en un blog). ¿Es esto realmente posible ?. De hecho, los he usado, pero no estoy seguro de este concepto. No estoy muy claro sobre esto, ¡por favor ayuda!¿Puedes escribir funciones anidadas en JavaScript?
Respuesta
¿Es esto realmente posible.
Sí.
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));
Lo siguiente es desagradable, pero sirve para demostrar cómo se pueden tratar las funciones como cualquier otro tipo de objeto.
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();
gran ejemplo. Añadiría que es importante tener en cuenta que las funciones definidas dentro de otras funciones solo existen en ese ámbito de funciones (a menos que, por supuesto, le asigne una función global, como se muestra en este ejemplo). –
Trate esas funciones como objetos que son –
Las funciones son objetos de primera clase que pueden ser:
- definido dentro de su función
- Creado al igual que cualquier otra variable u objeto en cualquier punto de su función
- Devuelto desde su función (que puede parecer obvio después de los dos anteriores, pero aún así)
basarse en el ejemplo dado por Kenny:
function a(x) {
var w = function b(y) {
return x + y;
}
return w;
};
var returnedFunction = a(3);
alert(returnedFunction(2));
le avisará con 5.
Este método se llama currying. – Yekver
No sólo se puede devolver una función que ha pasado a otra función como una variable, también puede usarlo para el cálculo dentro pero definiéndolo afuera. Vea este ejemplo:
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
lo uso con ajax – jscripter
Sí, es posible escribir y llamar a una función anidada en otra función.
Prueba esto:
function A(){
B(); //call should be B();
function B(){
}
}
- 1. JQuery/JavaScript: refactorización de funciones anidadas
- 2. Javascript - Argumentos Vs Funciones anidadas Vs Performance
- 3. ¿Puedes escribir en [PC]?
- 4. Cómo simular funciones anidadas?
- 5. ¿Puedes tener clases anidadas en PHP?
- 6. Devolución de valores de funciones anidadas en Javascript
- 7. Patrón de módulo Javascript, funciones anidadas y submódulos
- 8. Funciones anidadas: ¿uso inapropiado de efectos secundarios?
- 9. Cómo escribir JavaScript legible
- 10. puede probar funciones anidadas en scala?
- 11. ¿Cómo pasar el objeto en funciones anidadas?
- 12. Python sobreescritura de variables en funciones anidadas
- 13. UIWebView: ¿Puedes desactivar Javascript?
- 14. Pruebas de unidad de ejecución en funciones anidadas
- 15. plataforma Haskell: funciones anidadas y optimización
- 16. ejemplos del mundo real de funciones anidadas
- 17. En Javascript, ¿puedes extender el DOM?
- 18. JavaScript Object.create - heredar propiedades anidadas
- 19. Decoradores de funciones anidadas que operan en argumentos en python
- 20. Funciones privadas en JavaScript
- 21. javascript: pasar funciones
- 22. Haskell scoping en definiciones de funciones anidadas utilizando
- 23. Variables locales en las funciones anidadas de Python
- 24. Funciones agregadas anidadas con la agrupación en postgresql
- 25. Javascript enlaces de funciones
- 26. ¿Puedes hacer desarrollo de escritorio usando JavaScript?
- 27. ¿Puedes controlar la animación GIF con Javascript?
- 28. animaciones anidadas utilizando tela y Javascript
- 29. ¿Puedes escribir una redirección 301 a un punto de anclaje?
- 30. Funciones estáticas privadas en javascript
Este método se llama currying. – Yekver
Woh! ¡Necesito sedación después de ver esto! –