w3schools usuario una tipos tecla pasar parametros oprima mover globales función funciones funcion forma ejemplos ejecutar desde cuando cualquier codigos javascript function reference call

usuario - pasar parametros a una funcion javascript desde html



¿Cuál es la diferencia entre una llamada de función y una referencia de función? (6)

¿Cómo puedo saber dónde se supone que debo dar una referencia a la función y cuándo debo llamarla?

¿Necesita la función para ejecutar ahora?

A continuación, agregue el () para ejecutarlo.

¿Necesita que la función sea referenciada para que se llame más tarde?

No agregue el ().

Tengo la siguiente función

function hello() { alert("hi!"); }

Toma este pedazo de código:

var elem = document.getElementById("btn"); elem.onclick = hello;

Mi pregunta puede ser un poco difícil de entender, así que tenga paciencia conmigo: ¿qué diferencia EXACTAMENTE DE ESTE fragmento de código de una llamada normal, o qué hace que este fragmento de código requiera una referencia a la variable de función en lugar de una llamada normal? ( hello(); )

¿Cómo puedo saber dónde se supone que debo dar una referencia a la función y cuándo debo llamarla?


¿Quieres que se ejecute AHORA? Entonces llámalo.

a=hello() significa "Llamar a hello() ASAP, y establecer su valor de retorno a".

Por otro lado, a=hello significa " a es un alias para hello . Si llama a() , obtendrá los mismos resultados que si llama hello() "

Utiliza este último para devoluciones de llamada, etc., donde quiere decirle al navegador lo que quiere que suceda después de que ocurra un evento. Por ejemplo, puede querer decir "llamar a hello() cuando el usuario hace clic" (como en el ejemplo). O, "Cuando la consulta AJAX devuelve un resultado, llame a la función de callback() en los datos devueltos".


Bueno, la propiedad onclick espera una referencia a una función, para que se ejecute cuando se hace clic en el elemento. Normalmente es:

element.onclick = funcRef;

o

element.onclick = function () { funcRef(); };

(pero, por supuesto, es mejor usar addEventListener y attachEvent )

Observe cómo ambos son referencias a funciones, no llamadas.

Cuando algo espera una referencia, no la llamas ... le asignas una referencia (primer ejemplo).

Cuando quiere llamar específicamente a una función, la llama con () (segundo ejemplo). Pero observe cómo en el segundo ejemplo, todavía hay una referencia a una función que está asignada para hacer onclick , es solo una función anónima.

Probablemente la parte más importante:

Algunas personas piensan que quieres hacer esto:

element.onclick = funcRef();

Pero eso ejecuta inmediatamente la función (debido a la () ), y asigna su valor de retorno a onclick . A menos que el valor de retorno sea una función, esto no es lo que desea.

Creo que la moraleja de la historia es que cuando quieres / necesitas algo que ejecutar en este momento, llamas a la función. Si se desea la función para su uso posterior o si se necesita almacenarla, no la llame.


Casi todas las declaraciones en JavaScript tienen un valor de retorno. A menos que se especifique lo contrario, las funciones en JavaScript volverán undefined cuando se las llame. Entonces, el único contexto en el que tendría sentido llamar a su función en esta declaración de asignación si fuera a devolver una función:

function hello() { return function() { alert("hi!"); } } elem.onclick = hello();


Se necesita una referencia a su función en algún lugar sin importar cómo se llame. La diferencia aquí es que no estás llamando explícitamente a la función de hello . Está asignando una referencia a esa función al controlador de eventos onclick del nodo DOM elem para que cuando se onclick para ese Nodo, se llame a su función.


hola () significa que llamas a esa función, lo que significa que la función se ejecutará directamente.

mientras que cuando tienes elem.onclick = hola, esto se llama devolución de llamada. Donde no se ejecuta hola directamente, sino solo cuando se desencadena un evento determinado (en este caso, cuando hay un clic en el elemento)