Cómo declarar funciones
Por lo general, hay dos formas de declarar una función:
foo () {}; // Declaración de funciones var foo = function () {}; // Expresión de funcionesLa diferencia
1. La expresión de la función se puede ejecutar directamente con los soportes después de él
2. La declaración de función se prensará por adelantado
Preanálisis
Primero veamos un ejemplo:
foo (); // Declaración de funciones foo_later (); // foo_later no es una función de funciones foo () {console.log ('Declaración de funciones'); } var foo_later = function () {console.log ('Function Expression'); }Como puede ver, la declaración de función Foo está preparada y se puede ejecutar antes de su propio código; La expresión de la función foo_later no puede. Para resolver este problema, primero debemos descubrir el mecanismo de trabajo del analizador JavaScript.
Variable Boost (polipasto)
El analizador JavaScript elevará las variables y las declaraciones de funciones en su propio alcance. Es decir, el ejemplo anterior es realmente entendido y analizado por el analizador en la siguiente forma:
function foo () {console.log ('Declaración de funciones'); } // Todas las declaraciones de función están avanzadas var foo_later; // Expresiones de funciones (declaraciones variables) solo avanzan las variables, y la operación de asignación no avanza foo (); foo_later (); foo_later = function () {console.log ('expresión de funciones'); }Esto también puede explicar por qué llamar a una función antes de que la expresión de la función devuelva un error, porque aún no se ha asignado, es solo una variable indefinida y, por supuesto, no se puede ejecutar.
Del mismo modo, también podemos intentar adivinar la salida del siguiente código:
console.log (declarado); var declarado = "¡Ahora está definido!"; console.log (declarado);
Este código se puede analizar en el siguiente formulario:
Var declarado; console.log (declarado); // UndefinedDeclaredLater = "¡Ahora está definido!"; console.log (declarado); // ¡Ahora está definido!
La declaración de la variable se menciona primero (por lo que no se informará ningún error en la variable), pero la asignación no avanza, por lo que el primer resultado de salida no está definido.
Cabe señalar que
Dado que las declaraciones de funciones están preparadas, no use este método para declarar diferentes funciones. Intente adivinar la salida del siguiente ejemplo:
if (true) {function aaa () {alert ('1'); }} else {function aaa () {alert ('2'); }} aaa ();A diferencia de lo que esperábamos, el código aparece con "2". Esto se debe a que las dos declaraciones de la función se practican antes de que se ejecute la declaración IF, por lo que la declaración IF es inútil. Cuando se llama a AAA (), la siguiente función se ejecuta directamente.
Resumir
A través de la explicación anterior, podemos resumirlo de la siguiente manera:
• La declaración de la variable avanza a la parte superior del alcance, y la asignación permanece en su lugar
• Declaración de funciones de todo el "antes"
• Cuando se asigna una función a una variable como valor, solo la variable está "avanzada", y la función no está "avanzada".
Experimente más practicando los ejemplos anteriores. Además, como una mejor práctica: las declaraciones variables deben colocarse en la parte superior del alcance/función (¡JavaScript solo tiene alcance de función!).
El artículo anterior comprende de manera integral las declaraciones de funciones, las expresiones de funciones y la mejora variable es todo el contenido que comparto con usted. Espero que pueda darle una referencia y espero que pueda apoyar más a Wulin.com.