El objeto de función en JS es algo fascinante, pero a menudo es confuso porque es demasiado flexible.
Déjame mostrarte un fragmento de código primero.
var Scope = "Global"; Function ConstructFunction () {var scope = "local"; return new function ("return Scope");} constructFunction () () (); función constructFunction2 () {var scope = "local"; return function () {return Scope;}} constructFunction2 () ();¿Cuál es tu primer sentimiento cuando ves a estos dos? Todos regresan "local"? ? Si este es el caso, debe observar más de cerca la explicación a continuación. ConstructFunction2 () debería ser fácil de entender el cierre, y no entraré en detalles aquí. A continuación, me centraré en la situación de ConstructFunction ().
El constructor de funciones () se usa aquí. Aunque el constructor de funciones () no se usa muy comúnmente, todavía es necesario comprenderlo.
Ya sea que se trate de una declaración de definición de función o una expresión cuantitativa directa de función, la definición de función debe usar la palabra clave functer (). Las funciones individuales también se pueden definir mediante el constructor de function (), como:
var f = nueva función ("x", "y", "return x*y");El efecto real de esta línea es equivalente a la siguiente línea de código.
var f = function (x, y) {x*y};El constructor de funciones () puede pasar en cualquier número de argumentos de cadena, y el texto representado por el último argumento es el cuerpo de la función; Puede contener cualquier declaración de JavaScript, y cada declaración está dividida por un punto y coma. Todas las demás cadenas de argumentos pasadas al constructor son cadenas que especifican el nombre de la función. Si la función definida no contiene ningún parámetro, simplemente pase un cuerpo de función de cadena al constructor.
Hay varios puntos a los que prestar especial atención sobre el constructor de funciones ():
1. El constructor de funciones () permite a JavaScript crear y compilar dinámicamente las funciones en tiempo de ejecución.
2. Cada vez que se llama al constructor de funciones (), el cuerpo de la función se analizará y se creará un nuevo objeto de función. Si este constructor se ejecuta en un bucle o múltiples llamadas, la eficiencia de ejecución se verá afectada. En contraste, las funciones anidadas y las expresiones de definición de funciones en los bucles no se recompilan cada vez que se ejecutan.
2. El último punto también es un punto muy importante sobre el constructor de funciones (), es decir, las funciones que crea no usan alcance léxico. Por el contrario, la compilación del código de cuerpo de funciones siempre se ejecutará en la función de nivel superior. Después de leer esto, la función anterior constructFunction () (); ¿Debería ser fácil de entender devolver "Global"?
Lo anterior es el constructor JS Function () introducido por el editor. Espero que sea útil para todos. Si tiene alguna pregunta, déjame un mensaje y el editor responderá a todos a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!