Explique las diferencias en el uso de foo entre function foo() {} y var foo = function() {}

Aquí vemos las diferencias en el uso de foo entre function foo() {} y var foo = function() {}. 
function foo() {} es una función normal o declaración de función y var foo = function() {} es una función anónima o función de expresión o, en palabras simples, también se puede ilustrar que es una variable dentro de la cual se envuelve una función y así esa variable ya no permanecerá en un estado de variable eventualmente se convirtió en una función accesible en sí misma. Ahora veamos las diferencias:

1. Por nombre:
cuando usamos la palabra clave de función antes del nombre de la función, esto se denomina función normal o declaración de función.
Cuando usamos la palabra clave function sin el nombre de la función, esto se denomina Función anónima o Función de expresión.

Función normal o declaración de función: aquí foo es el nombre de la función.

function foo() {
    // Function Body
} 

Función Anónima o Función de Expresión: Aquí la función se almacena en la variable foo usando var.

var foo = function() {
    // Function Body
}

A menudo escribimos la función anónima como la función de flecha, que se introdujo en ES6 (recomendado).

var foo = () => {
    // Function Body
}

2. Implementación: Aquí vemos cómo llamar a la función en Función normal y Función anónima. Cuando se llama a cualquier función normal o función anónima (que está envuelta dentro de cualquier variable), se llama de manera similar a como se llama a la función normal.

Función Normal o Declaración de Función: Aquí usamos el nombre de la función “foo” para llamar a la función completa.

Javascript

<script>
    function foo() {
      console.log("hello");
    };
     
    foo();
</script>

Producción:

hello

Aquí podemos llamar a la función «foo» antes o después de declarar la función. Eso significa que podemos declarar la función donde queramos en nuestro código.

Javascript

<script>
foo();
 
function foo() {
  console.log("hello");
};
</script>

Producción:

hello

Función anónima o función de expresión: aquí usamos la variable foo para llamar a la función completa.

Javascript

<script>
    var foo = function() {
        console.log("hello");
    };
     
    foo();
</script>

Producción:

hello

Aquí obtendremos un error si llamamos a la función antes de declarar la función. 

Javascript

<script>
    foo();
     
    var foo = function() {
      console.log("hello");
    };
</script>

Producción:

TypeError: foo is not a function 

Ahora veamos la siguiente implementación que se implementa usando la sintaxis de la función de flecha (en ES6).

Javascript

let foo  = () => {
    console.log("Hello World...!!");
}
 
foo();
 
// This code is contributed by Aman Singla....

Producción:

Hello World...!!

3. Pasar Argumentos: Aquí veremos cómo pasar un argumento dentro de una función.

Función normal o declaración de función: aquí pasaremos el argumento solo cuando llamamos a la función completa por el nombre de la función. 

Javascript

<script>
    function foo(x,y) {
      console.log(x+y);
    };
     
    foo(1,3);
</script>

Producción:

4

Función Anónima o Función de Expresión: Aquí pasaremos el argumento solo cuando llamemos a toda la función por el nombre de la variable. 

Javascript

<script>
    var foo = function(x,y) {
      console.log(x+y);
    };
     
    foo(1,3);
</script>

Producción:

4

A continuación se muestra la implementación del fragmento de código anterior utilizando la sintaxis de la función de flecha:

Javascript

let foo  = (x , y) => {
    console.log(x + y);
}
 
foo( 7 , 8);
 
// This code is contributed by Aman Singla....

Producción:

15

4. Función autoejecutable: aquí, cuando se crea la función, se llama inmediatamente a la función. Aquí usamos la función anónima.

Javascript

<script>
    (function(x,y){
      console.log(x+y);
    })
     
    (2,3);
</script>

Producción:

5

Publicación traducida automáticamente

Artículo escrito por torq1284 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *