Formas de crear funciones en javascript

En javascript existen básicamente 2 formas de crear una función, este artículo es para intentar desenmarañar cual de ambas formas es la mejor o al menos lo que yo considero mejor (este suele ser un tema muy polémico)..

La primera forma es simplemente crear una función como en cualquier otro lenguaje (Function Declaration) y se utiliza la instrucción “function”, la función está disponible en tiempo de análisis y se puede llamar casi desde cualquier lugar.. por ej:

function fx_1() {
    // código ...
}

La segunda que es la menos utilizada por los “non – javascripters coders” (ódiame, pero se reconocen por esto).. y es crear una variable a la cual se le asigna una función (Function Expression).. por ej:

// asignación de una función anónima
var fx_2 = function() {
    // código ...
};
 
// asignación de una función nombrada
// es exactamente lo mismo
var fx_2 = function foo() {
    // código ...
};

Mmm.. pues en realidad parece no haber diferencias.. y la única diferencia que encuentro es que fx_1 se puede invocar sin importar donde se encuentre la declaración..

fx_1(); // funciona
 
function fx_1(){
    // código ...
}
 
fx_1(); // también funciona

Pero si intentan utilizar la segunda manera quizás no puedan invocar la función antes de haberse seteado el valor de la variable..

fx_2(); // undefined, porque fx_2 no existe aún
 
var fx_2 = function(){
    // código ...
}
 
fx_2(); // funciona

Me gusta más la segunda forma, aparte de que permite la sobre-escritura del método sin modificar el valor original de la función..

var fx_2 = function(){
    console.log('foo');
}
 
fx_2(); // el resultado será foo
 
fx_2 = function(){
    console.log('abc');
}
 
fx_2(); // el resultado será abc

Y si intentan hacer esto con una declaración de función de la primera forma.. no se podría porque se sobre-escribe la declaración completa del método..

function fx_1(){
    console.log('foo');
}
 
fx_1(); // el resultado será abc
 
function fx_1(){
    console.log('abc');
}
 
fx_1(); // el resultado será abc

Se podría decir que la segunda forma es una declaración de función en tiempo de ejecución y personalmente me gusta más que la primera porque creo que se tiene cierto control con la declaración de funciones y se evita ese desorden para lo que se presta tanto javascript.

Happy Coding!

Co-fundador de Qbit Mexhico, usuario de linux, Developer en tecnologías web.. Nicaragüense, centro en basketball, primer centro en rugby y pintor los fines de semana. Ortögrafo y ambientalista psicológico (de escritorio).. ese soy yo!

Si te ha servido compártelo y difunde nuestro blog..

Facebook Twitter LinkedIn Google+ Flickr YouTube Skype 

Compartir en...Tweet about this on TwitterPin on Pinterest0Share on LinkedIn0Share on Google+0Share on Facebook0