Cuidado al declarar funciones de javascript

article_01360_.png
Solucionex
01
Abr 16

Hoy os quiero contar un comportamiento interesante que sucede con la forma de declarar las funciones en javascript.

Como sabéis hay dos formas de declarar funciones en javascript, forma declarativa y a través de una expresión.

// Declaratica function prueba(){ return x+y; } // Expresion var prueba = function(){ return x+y; }

A priori podemos pensar que el uso de un tipo u otro, nos ofrece el mismo resultado, pero no ser así. La cuestión es que ambas instrucciones son evaluadas por javascript en diferentes momentos. En concreto las funciones declarativas se ejecutan antes que cualquier otra y las expresiones, son evaluadas cuando el intérprete alcanza su posición. Esto es importante conocerlo ya que nos pueden generar problemas.

Veamos un ejemplo:

El siguiente código funciona perfectamente, el alert muestra el valor 8

alert( suma( 3, 5 ) ); // 8 function suma( x, y ){ return x + y; }

Pero este otro código da un error de ejecución debido a que ya que cuando se llama a la función alert, el intérprete aún no ha podido evaluar la función suma

alert( suma( 3, 5 ) ); // Error var suma = function( x, y ){ return x + y; }

Cuidado al mezclar funciones declarativas y expresiones al mismo tiempo. Y no olvidéis que las expresiones, son evaluadas cuando el intérprete pasa por su posición.

Espero que os sirva de ayuda :)