Foros del Web » Programando para Internet » Javascript »

cual es la mejor forma de crear una funcion?

Estas en el tema de cual es la mejor forma de crear una funcion? en el foro de Javascript en Foros del Web. Hola chicos bueno pues mi pregunta gracias a Dios es facil pero tengo que hqcercela a unos expertos como uds :D Me ley un libro ...
  #1 (permalink)  
Antiguo 22/05/2013, 09:18
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 10 años, 1 mes
Puntos: 2
cual es la mejor forma de crear una funcion?

Hola chicos bueno pues mi pregunta gracias a Dios es facil pero tengo que hqcercela a unos expertos como uds :D

Me ley un libro sobre javascrip (No todo) y en la parte de crear funciones recomendaban crearlas asi:

Código Javascript:
Ver original
  1. var hola=function(){
  2.      alert('Hello');
  3. }

pero cuando las hago asi mi editor de texto que es netbeans creo que el ultimo para linux el 7.3 me muestra una liniesita inferior amarilla. Pues no es error pero me dice que deberia hacerle un cambio.

Cuando la creo normalmente pues no sale nada :

Código Javascript:
Ver original
  1. function hola(){
  2.      alert('hola');
  3. }

me muestra que esta bn pero pues ahi si es programa vs Libro (talves el libro ya estaba viejo :D )
  #2 (permalink)  
Antiguo 22/05/2013, 10:14
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 11 años
Puntos: 30
Respuesta: cual es la mejor forma de crear una funcion?

Redundancia, javascript como la mayoria de lenguajes es multiparadigma, es decir "el orden de los factores no altera el producto", pero en este caso, si quieres crear una función que no este subordinada, usa la segunda forma, aunque tengo que mencionarte, que cada vez que inicialices algo en JS con var, será del alcance loca y no global, ejemplo :

var Numero = 100; // local

Numero = 100; Global
  #3 (permalink)  
Antiguo 22/05/2013, 10:32
Avatar de hackjose  
Fecha de Ingreso: abril-2010
Ubicación: Edo Mexico
Mensajes: 1.178
Antigüedad: 12 años, 10 meses
Puntos: 131
Respuesta: cual es la mejor forma de crear una funcion?

Hay 3 formas de crear una función

Código Javascript:
Ver original
  1. //Primer forma
  2. function name(args)
  3. {
  4.  
  5. }
  6.  
  7. //Segunda forma
  8. var name = function(args)
  9. {
  10.  
  11. }
  12.  
  13. //Variante de segunda forma, en esta segunda variante name2 existe unicamente dentro de la funcion
  14.  
  15. var name = function name2(i)
  16. {
  17.     if(i >= 0)
  18.     {
  19.      alert(i);
  20.      i--;
  21.      name2(i);
  22.     }
  23. }
  24. name(10);
  25.  
  26. //tercer forma
  27. var name = new Function(arg1,arg2,argn,cuerpodelafuncion);
  28.  
  29. //otra forma funcion anonima autoejecutable
  30. (function(valor){alert(valor);})(5);
  31. //en los primeros parentesis va una funcion anonima y en los segundos parentesis va el parametro que vayas a pasar

Hasta donde se las 3 formas vienen en ECMA262 y por lo tanto son estandares

La anonima autoexecutable no se si venga, pero funciona XD

Saludos
  #4 (permalink)  
Antiguo 22/05/2013, 20:12
Avatar de sonickseven  
Fecha de Ingreso: diciembre-2012
Ubicación: bogota
Mensajes: 404
Antigüedad: 10 años, 1 mes
Puntos: 2
Respuesta: cual es la mejor forma de crear una funcion?

Cita:
Iniciado por Albuss Ver Mensaje
Redundancia, javascript como la mayoria de lenguajes es multiparadigma, es decir "el orden de los factores no altera el producto", pero en este caso, si quieres crear una función que no este subordinada, usa la segunda forma, aunque tengo que mencionarte, que cada vez que inicialices algo en JS con var, será del alcance loca y no global, ejemplo :

var Numero = 100; // local

Numero = 100; Global
osea que si yo ceclaro una funcion sin var la puedo nombrar hasta en otro archivo javascript?

no importa si esta antes o despues?
  #5 (permalink)  
Antiguo 22/05/2013, 20:36
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 11 años, 9 meses
Puntos: 343
Respuesta: cual es la mejor forma de crear una funcion?

No es lo mismo.

Una es una function expression y la otra es una function declaration. Si bien las diferencias son sutiles, es bueno conocer las diferencias.

Literatura recomendada: http://dmitrysoshnikov.com/ecmascrip...r-5-functions/

En cuanto a la pregunta original, por lo general trato de evitar las function declarations.)
__________________
blog | @aijoona
  #6 (permalink)  
Antiguo 22/05/2013, 21:41
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 11 años
Puntos: 30
Respuesta: cual es la mejor forma de crear una funcion?

Extiendo la pregunta ... , que pasa con las declaraciones de prototipos? ,

Código Javascript:
Ver original
  1. var functionPrototypeOne(){
  2.  
  3.  
  4. }
  5.  
  6. Var ObjectOne = new functionPrototypeTwo();
  7.  
  8. functionPototype(){
  9.  
  10.  
  11. }
  12.  
  13. Var ObjectTwo = new functionPrototypeTwo();


No puede ser local, ¿cual es la diferencia entonces?
  #7 (permalink)  
Antiguo 27/05/2013, 07:09
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 11 años, 9 meses
Puntos: 343
Respuesta: cual es la mejor forma de crear una funcion?

Las diferencias las vas a encontrar en el artículo que linkee.

La declaración de constructores (funciones a las cuales vas a invocar con el operador new) poco y nada tiene que ver con la forma de declaración de la function.

Puede ser una function expression, una function declaration o inclusive el resultado de una evaluación de códigl (ya sea mediante eval o new Function)

Aplica las mismas reglas de scoping que cualquier otra function.
__________________
blog | @aijoona
  #8 (permalink)  
Antiguo 27/05/2013, 08:23
Avatar de marlanga  
Fecha de Ingreso: enero-2011
Ubicación: Murcia
Mensajes: 1.024
Antigüedad: 12 años
Puntos: 206
Respuesta: cual es la mejor forma de crear una funcion?

Sólo hay una diferencia entre las funciones declaradas y las funciones expresadas, la culpa es el modo en el que los motores javascript funcionan.

Lo primero que hace un motor de javascript es almacenar en la caché el código entero, sin ejecutarlo. Cuando lo tiene todo en memoria, lo ejecuta. Pero no secuencialmente, antes ejecuta primero todas las funciones y expresiones declarativas.

Después, ejecutara secuencialmente el resto del código.

Así que si llamas a una función declarada definida mucho después en el código, funcionarán.

Por el contrario, si llamas a una función expresada que está definida después, el motor de javascript lanzará un error o un undefined, según el motor de javascript usado.


Un ejemplo:

Código Javascript:
Ver original
  1. if (funcionDeclarada) alert(funcionDeclarada()+" antes");
  2. if (funcionExpresada) alert(funcionExpresada()+" antes");
  3.  
  4. function funcionDeclarada(){
  5.     return "funcion declarada";
  6. }
  7. var funcionExpresada=function(){
  8.     return "funcion expresada";
  9. }
  10.  
  11. alert(funcionDeclarada()+" despues");
  12. alert(funcionExpresada()+" despues");

http://jsfiddle.net/9ZmkZ/


También habeis echo referencia a cúal es la diferencia entre estas dos formas de declarar variables:

Código Javascript:
Ver original
  1. var variable1=5;
  2. variable2=5;

Pues hay una tremenda diferencia. La primera, usando VAR hará que esa variable sólo exista en el CLOSURE donde está declarada, que es una especie de ámbito de existencia de las variables y funciones, parecido pero no igual a lo que en otros lenguajes se llama "ámbito local".

La segunda forma, lo que hace es crear un atributo al objeto WINDOW que es el padre de todo el código que creemos en javascript. En ese caso, hemos creado un window.variable2 con el valor de 5, y dicho valor será accesible en todas partes.

Última edición por marlanga; 27/05/2013 a las 08:35

Etiquetas: forma, funcion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:40.