w3schools valor una retornar pasar parametros otro llamar funciones funcion ejemplos desde anidadas javascript function scope

valor - pasar parametros a una funcion javascript desde html



declaraciones de alcance de funciones de JavaScript (4)

Las declaraciones de funciones siempre son locales al alcance actual, como una variable declarada con la palabra clave var .

Sin embargo, la diferencia es que si se declaran (en lugar de asignarse a una variable) su definición se iza , por lo que serán utilizables en cualquier lugar del alcance, incluso si la declaración viene al final del código. Ver también var functionName = function () {} vs function functionName () {} .

La palabra clave var en javascript hace que una variable se almacene en el ámbito local. Sin variables var pertenecen al alcance global. ¿Qué hay de las funciones? Está claro qué sucede cuando las funciones se declaran como variables

var foo = function() {...}

pero qué alcance hace

function foo() {...}

¿pertenece a?

EDIT: me di cuenta de que no hice la pregunta correcta para hacer un seguimiento. En el anidado más externo, ¿hay alguna diferencia entre las dos declaraciones anteriores y la siguiente declaración?

foo = function() {...}


Notable distinción teniendo en cuenta los globales globales implícitos:

var foo = function() { // Variables var myVar1 = 42; // Local variable myVar2 = 69; // Implicit global (no ''var'') // Functional Expressions var myFn1 = function() { ... } // Local myFn2 = function() { ... } // Implicit global function sayHi() { // I am a function declaration. Always local. } }

Espero que eso aclare un poco. Los globales implícitos se definen si olvida una var antes de su asignación. Es un peligro peligroso que se aplica a declaraciones variables y expresiones funcionales.


Pertenece al alcance actual , siempre. Por ejemplo:

// global scope // foo is a global function function foo() { // bar is local to foo function bar() { } }

En cuanto a tu segunda pregunta, esto:

foo = function() {...}

es una expresión de función anónima asignada a una variable global (a menos que esté ejecutando el modo estricto, entonces foo no estaría definido). La diferencia entre eso y la function foo() {} es que este último es una declaración de función (frente a una declaración de variable , a la que se le asigna una expresión de función anónima).

Puede que le interese este excelente artículo sobre declaraciones de funciones y expresiones de funciones: expresiones de funciones nombradas desmitificadas .


Su primer ejemplo ( var foo = function() {...} ) se llama función anónima. Se declara dinámicamente en tiempo de ejecución y no sigue las mismas reglas que una función normal, pero sigue las reglas de las variables.