0
Tengo una pregunta, ¿qué contiene la función express()? , porque no puedo entender cómo llamas a una función si almacenas express() en una variable como: const app = express();
y luego llamas, por ejemplo, a la función listen() como si fuera un objeto:
aplicación.escuchar()
¿Pueden ayudarme a entender?
gracias de antemano
Las funciones en Javascript son objetos. Puede asignarlos a variables. Puede ejecutarlos llamándolos. Puede asignarles propiedades. Puede leer las propiedades de ellos.
Entonces, esto es asignar una función a una variable (asigna el módulo. module.exports desde el módulo 'express' a una variable llamada express ):
const express = require('express');Esto es ejecutar la función llamándola:
const app = express(); Esto es acceder a la propiedad .static en la función express (que también puede ser una función):
app.use(express.static('/public'));Como otro ejemplo, todas las funciones regulares tienen algunas propiedades integradas:
function greet(greeting) { console.log(greeting); } // outputs 1 because the function has one declared argument console.log(greet.length);Pero también puede agregar sus propias propiedades si lo desea, ya que las funciones son una subclase de un objeto.
Los objetos pueden tener métodos. Los métodos son realmente solo funciones. A veces esos métodos devuelven algo y otras veces no. A veces te preocupas por el resultado y otras veces no.
const myObj = { add: (a, b) => a+b; echo: (msg) => console.log(msg); } const result = myObj.add(1,2); myObj.echo(result);Una función anidada dentro de otra no se puede llamar directamente desde fuera de la función exterior.
Sin embargo, una función interna puede hacerse accesible si se le hace una referencia global .
En mi ejemplo recortado, outerFunction contiene dos innerFunction seguidas de dos declaraciones de variables que asignan esas funciones a cada una de las dos variables (llamadas outerFunction.innerFunction1 externa. función interna 1 y outerFunction.innerFunction2 . Función interna 2). Si se hubieran declarado con let o const dentro de la función externa, solo serían accesibles desde dentro de la función. Sin embargo, declarar una variable solo por su nombre le otorga un alcance global.
Entonces, si se invoca la función outerFunction , coloca las funciones internas en el ámbito global. Ahora se puede hacer referencia a ellos por los nombres que se les dieron outerFunction.innerFunction1 y outerFunction.innerFunction2 . Darles nombres que contengan un punto es útil como recordatorio de dónde provienen las funciones, pero se les puede dar cualquier nombre y llamarlas directamente (como en mi tercer ejemplo en el fragmento).
function outerFunction(){ function innerFunction1(){ console.log( 'hello from first innerFunction' ); } // end innerFunction2; function innerFunction2(){ console.log('hello from second innerFunction'); } // end innerFunction2; function innerFunction3(){ console.log('hello from the third function'); } // end innerFunction3; outerFunction.innerFunction1 = innerFunction1; outerFunction.innerFunction2 = innerFunction2; anyName = innerFunction3; } // end outer function; outerFunction(); // essential to declare and initialise global variables about to be accessed; outerFunction.innerFunction1(); outerFunction.innerFunction2(); anyName();Si puede mirar dentro de la función externa del ejemplo que dio, encontrará una declaración del nombre de la variable de notación de puntos que está usando para llamarlo. No hay nada mágico en la notación de puntos aquí, es solo un nombre de variable.