Definiciones de funciones de JavaScript
Las funciones de JavaScript se definen con la
function
palabra clave.
Puede utilizar una declaración de función o una expresión de función .
Declaraciones de funciones
Anteriormente en este tutorial, aprendió que las funciones se declaran con la siguiente sintaxis:
function functionName(parameters) {
// code to be executed
}
Las funciones declaradas no se ejecutan inmediatamente. Se "guardan para su uso posterior" y se ejecutarán más tarde, cuando se invoquen (invoquen).
Ejemplo
function myFunction(a, b) {
return a * b;
}
Los puntos y comas se utilizan para separar sentencias JavaScript ejecutables.
Dado que una declaración de función no es una declaración ejecutable, no es común terminarla con un punto y coma.
Expresiones de función
Una función de JavaScript también se puede definir usando una expresión .
Una expresión de función se puede almacenar en una variable:
Ejemplo
const x = function (a, b) {return a * b};
Después de almacenar una expresión de función en una variable, la variable se puede usar como una función:
Ejemplo
const x = function (a, b) {return a * b};
let z = x(4, 3);
La función anterior es en realidad una función anónima (una función sin nombre).
Las funciones almacenadas en variables no necesitan nombres de función. Siempre se invocan (llaman) usando el nombre de la variable.
La función anterior termina con un punto y coma porque es parte de una declaración ejecutable.
El constructor de funciones()
Como has visto en los ejemplos anteriores, las funciones de JavaScript se definen con la function
palabra clave.
Las funciones también se pueden definir con un constructor de funciones de JavaScript incorporado llamado
Function()
.
Ejemplo
const myFunction = new Function("a", "b", "return a * b");
let x = myFunction(4, 3);
En realidad, no tiene que usar el constructor de funciones. El ejemplo anterior es lo mismo que escribir:
Ejemplo
const myFunction = function (a, b) {return a * b};
let x = myFunction(4, 3);
La mayoría de las veces, puede evitar usar la new
palabra clave en JavaScript.
función de elevación
Anteriormente en este tutorial, aprendió sobre "elevación" ( JavaScript Hoisting ).
Hoisting es el comportamiento predeterminado de JavaScript de mover declaraciones a la parte superior del alcance actual.
El levantamiento se aplica a las declaraciones de variables ya las declaraciones de funciones.
Debido a esto, las funciones de JavaScript se pueden llamar antes de que se declaren:
myFunction(5);
function myFunction(y) {
return y * y;
}
Las funciones definidas mediante una expresión no se elevan.
Funciones de autoinvocación
Las expresiones de función se pueden hacer "autoinvocables".
Una expresión autoinvocada se invoca (inicia) automáticamente, sin ser llamada.
Las expresiones de función se ejecutarán automáticamente si la expresión va seguida de ().
No puede autoinvocar una declaración de función.
Debe agregar paréntesis alrededor de la función para indicar que es una expresión de función:
Ejemplo
(function () {
let x = "Hello!!"; // I will invoke myself
})();
La función anterior es en realidad una función autoinvocada anónima (función sin nombre).
Las funciones se pueden usar como valores
Las funciones de JavaScript se pueden utilizar como valores:
Ejemplo
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3);
Las funciones de JavaScript se pueden utilizar en expresiones:
Ejemplo
function myFunction(a, b) {
return a * b;
}
let x = myFunction(4, 3) * 2;
Las funciones son objetos
El typeof
operador en JavaScript devuelve "función" para funciones.
Pero, las funciones de JavaScript se pueden describir mejor como objetos.
Las funciones de JavaScript tienen propiedades y métodos .
La arguments.length
propiedad devuelve el número de argumentos recibidos cuando se invocó la función:
Ejemplo
function myFunction(a, b) {
return arguments.length;
}
El toString()
método devuelve la función como una cadena:
Ejemplo
function myFunction(a, b) {
return a * b;
}
let text = myFunction.toString();
Una función definida como la propiedad de un objeto, se llama método del objeto.
Una función diseñada para crear nuevos objetos se denomina constructor de objetos.
Funciones de flecha
Las funciones de flecha permiten una sintaxis corta para escribir expresiones de funciones.
No necesita la function
palabra clave, la return
palabra clave y las
llaves .
Ejemplo
// ES5
var x = function(x, y) {
return x * y;
}
// ES6
const x = (x, y) => x * y;
Las funciones de flecha no tienen las suyas propias this
. No son adecuados para definir métodos de objetos .
Las funciones de flecha no se elevan. Deben definirse antes de que se utilicen.
Usar const
es más seguro que usar var
, porque una expresión de función siempre es un valor constante.
Solo puede omitir la return
palabra clave y las llaves si la función es una declaración única. Por eso, puede ser un buen hábito conservarlos siempre:
Ejemplo
const x = (x, y) => { return x * y };
Las funciones de flecha no son compatibles con IE11 o versiones anteriores.