Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: bermartinv en 02 de Marzo 2016, 13:59

Título: JavaScript diferencia entre variables locales y globales scope o ámbito CU01167E
Publicado por: bermartinv en 02 de Marzo 2016, 13:59
Respuesta al ejercicio CU01167E del tutorial JavaScript desde cero.

Citar
a) Haz una lista de las variables que intervienen indicando para cada variable cuál es su nombre, cuál es su tipo, cuál es su cometido y si está definida como variable global o variable local.

var target_date --> es una variable global, es de tipo Date y su cometido es que tenga almacenada la fehca que introducimos.

var days, hours, minutes, seconds --> son variables globales que podrán ser definidas en cualquier momento, pero que no estan inicializadas entonces son de tipo 'undefined'


DENTRO DE LA FUNCION ejemplo

var countdown --> es una variable local de la funcion ejemplo() y no podrá ser modificada por otra función que no sea la que la contiene. Es de tipo object.

var seconds-left --> tambien una variable local, de tipo 'number'. Está definida por una operacion que interviene  una variable local y una variable local.

days --> es de tipo number, aparte de ser utilizada en esta función en el ámbito global será inicializada. Podiendolo usar cualquier otra funcion con el valor que se obtenga de la operacion. Convierte su resultado a entero.

var seconds_left
--> variable local de tipo number

hours -->  es de tipo number, aparte de ser utilizada en esta función en el ámbito global será inicializada. Podiendolo usar cualquier otra funcion con el valor que se obtenga de la operacion. Convierte su resultado a entero.

minutes -->  es de tipo number, aparte de ser utilizada en esta función en el ámbito global será inicializada. Podiendolo usar cualquier otra funcion con el valor que se obtenga de la operacion. Convierte su resultado a entero.

seconds -->  es de tipo number, aparte de ser utilizada en esta función en el ámbito global será inicializada. Podiendolo usar cualquier otra funcion con el valor que se obtenga de la operacion. Convierte su resultado a entero.


Citar
b) ¿Qué ocurre si definimos la variable current_date en el ámbito global en vez de dentro de la función? ¿Por qué ocurre esto?

Si definimos current_date fuera de la función la variable se define nada más que le toca en el hilo de la función, se define una vez y no se modifica cada vez que la llamada de setInterval declara de nuevo la función cada segundo.


Citar
c) ¿Podríamos definir todas las variables como locales a la función y prescindir de las variables globales? Si se pudiera hacer, ¿crees que sería positivo para el diseño del código, su mantenimiento y ampliabilidad, o por el contrario, que sería negativo?

Sí se podría crear las variables como locales, pero de hacerlo así es para facilitar la lectura del codigo y facilitar el mantenimiento y reusabilidad.


Citar
d) ¿Qué métodos de los empleados en el código devuelven valores en milisegundos?

No entiendo esta pregunta. El único método que veo que se use es 'getTime()', que pertenece al objeto Date.


Saludos.
Título: Re:JavaScript diferencia entre variables locales y globales scope o ámbito CU01167E
Publicado por: Mario R. Rancel en 04 de Marzo 2016, 09:57
Buenos días bien las respuestas
 
Pequeña errata var seconds-left --> tambien una variable local, de tipo 'number'. Está definida por una operacion donde interviene  una variable global local y una variable local.

En el apartado b) si se declara current_date en ámbito local el código no responde porque la variable no se redefine cada segundo, por ello no veríamos el efecto de cuenta atrás

En el apartado d) los métodos que devuelven valores en milisegundos son el método getTime() de objetos de tipo Date. Para pasar los valores devueltos a segundos se divide por mil como en (target_date - current_date) / 1000;

Saludos