Professional Documents
Culture Documents
Trabajo de Promocin
Grupo 4
Rapetti, Daro Zalewski, Ezequiel 2802/9 11023/9
ndice
Pgina ndice - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2 Introduccin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 Sintaxis de las variables - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3 Tipos de datos que almacenan las variables - - - - - - - - - - - - - - - - - - - - 4 String - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 Number - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5 Boolean - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 Objetos y Arrays - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6 Undefined - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 Null - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 7 Manejo de variables - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8 Declaracin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 8 Diferencias entre declarar variables con var, o no declararlas - - - - 9 Alcance de las variables - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 Variables locales - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 9 Variables globales - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 Punteros y Parmetros - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 10 Uso de la Memoria - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 11 Conclusin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 12 Bibliografa - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 12
2/12
Introduccin
JavaScript es un lenguaje de programacin interpretado, dialecto del estndar ECMAScript. Se define como orientado a objetos, basado en prototipos, imperativo, dbilmente tipado y dinmico. Se utiliza principalmente en su forma del lado del cliente (client-side), implementado como parte de un navegador web permitiendo mejoras en la interfaz de usuario y pginas web dinmicas, en bases de datos locales al navegador aunque existe una forma de JavaScript del lado del servidor (Server-side JavaScript o SSJS). Su uso en aplicaciones externas a la web, por ejemplo en documentos PDF, aplicaciones de escritorio (mayoritariamente widgets) es tambin significativo. JavaScript se dise con una sintaxis similar al C, aunque adopta nombres y convenciones del lenguaje de programacin Java. Sin embargo Java y JavaScript no estn relacionados y tienen semnticas y propsitos diferentes. Todos los navegadores modernos interpretan el cdigo JavaScript integrado en las pginas web. Para interactuar con una pgina web se provee al lenguaje JavaScript de una implementacin del Document Object Model (DOM). Tradicionalmente se vena utilizando en pginas web HTML para realizar operaciones y nicamente en el marco de la aplicacin cliente, sin acceso a funciones del servidor. JavaScript se interpreta en el agente de usuario, al mismo tiempo que las sentencias van descargndose junto con el cdigo HTML.
4/12
String
Las variables de tipo string permiten almacenar cualquier sucesin de caracteres. Cada carcter de la cadena se encuentra en una posicin a la que se puede acceder individualmente, siendo el primer carcter el de la posicin 0. El valor de estas variables se indica encerrado entre comillas simples o dobles Para incluir un carcter de control (saltos de lnea, tabulacin, etc.) se utiliza el carcter de escape \. Esta variable es automticamente traducida a un valor de referencia para que de esta forma se pueda utilizar como un objeto de la clase String junto con todas sus propiedades y mtodos. A partir de JavaScript 1.0 se puede utilizar el operador new sobre la clase String para crear un variables de tipo String. var cadena1 = Un String\n; var cadena2 = new String (\tUn String);
Number
Internamente, todos los nmeros se guardan como valores de punto flotante, por lo que no se hace distincin de estos. Los enteros pueden ser representados en base 10, en base hexadecimal agregando el prefijo 0x y en base octal agregando el prefijo 0 seguido de un nmero del 0 al 7. 45 decimal 0378 octal 0xAf hexadecimal Los de punto flotantes tambin pueden representarse en su notacin cientfica utilizando la letra e para indicar la potencia. 0.0001 flotante notacin normal 5/12
Boolean
Mientras que los tipos de datos de cadena y numrico pueden tener un nmero prcticamente ilimitado de valores diferentes, el tipo de dato Booleano slo puede tener dos: los literales true y false. Un valor Booleano expresa la validez de una condicin: indica si es verdadera o no. Las comparaciones realizadas en las secuencias de comandos siempre tienen un resultado Booleano. Observe la siguiente lnea de cdigo: y = (x == 2000); En este caso, el valor de la variable x se prueba para establecer si es igual al nmero 2000. Si es as, el resultado de la comparacin es el valor Booleano true, que se asigna a la variable y. En caso contrario, el resultado de la comparacin ser el valor Booleano false. Este tipo de valores es especialmente til en las estructuras de control. Ejemplo: if (x == 2000) z = z + 1; else x = x + 1; Puede utilizar cualquier tipo de expresin como expresin comparativa. Toda expresin que d como resultado una cadena 0, null, undefined o vaca se interpretar como false. Las expresiones que den como resultado cualquier otro valor se interpretarn como true.
Objetos y Arrays
Al igual que sucede con otros lenguajes de programacin, los objetos se emplean en JavaScript para organizar el cdigo fuente de una forma ms clara y para encapsular mtodos y funciones comunes. Tcnicamente, un objeto es un array asociativo formado por propiedades y mtodos, por tanto puede usarse la tradicional nocin de arrays para definirlos, otras forma son la notacin por puntos y la JSON. JSON (JavaScript Object Notation) es un formato sencillo para el intercambio de informacin. El formato JSON permite representar estructuras de datos (arrays) y objetos (arrays asociativos) en forma de texto. La notacin de objetos mediante JSON es una de las
6/12
Undefined
A todas las variables sin inicializar se les asigna el valor undefined, valor que tambin es devuelto cuando se consulta por las propiedades de un elemento que no existe. En una variable booleana, el valor undefined es considerado como el valor False. var test; // variable declarada pero no definida, ... // ... tiene el valor undefined var testObj = {}; alert(test); // la variable test existe pero su valor no ... // ... est definido, muestra undefined alert(testObj.myProp); // testObj existe, pero la propiedad no, ... // ... muestra undefined alert(undefined == null); // chequeo no restricto, muestra true alert(undefined === null); // chequeo restricto, muestra false No existe en el lenguaje un valor literal para undefined, por lo que (x == undefined) no es una prueba segura de chequear si una variable es indefinida, porque en las versiones anteriores a ECMAScript 5, se puede por ejemplo declarar var undefined = "Variable definida";. Una forma ms segura de comparar sera (typeof x === 'undefined').
Null
A diferencia de undefined, el valor null es utilizado para indicar que una variable ha sido declarada pero sin asignarle un valor particular. En una variable booleana, el valor null es considerado como el valor false. Null es un tipo primitivo del lenguaje denotado por la palabra null. Cuando se realizan chequeos restrictos de tipos, el valor null no es igual al valor false.
7/12
Manejo de variables
Declaracin
En la mayora de los lenguajes de programacin es obligatorio declarar cada variable antes de utilizarla en el cdigo mientras que en JavaScript se puede hacer sobre la marcha segn las vayamos necesitando. Durante la ejecucin de un programa, al llegar a la declaracin de una variable, en ese momento se reserva el espacio en memoria y se agrega una referencia a las listas de variables y valores que son utilizadas por el Recolector de Basura (Garbage Collector) al momento de liberar memoria (tema que se ampla ms adelante). Hay dos maneras de declarar variables: Declaracin explcita: Consiste en usar la sentencia var seguida del nombre de la variable. Esta opcin es la ms recomendada para que el cdigo sea ms legible. Declaracin implcita: Es cuando escribimos directamente el nombre de la variable. En este caso debe ir acompaada obligatoriamente de un valor. // declaracin explcita var cuidad; // declaracin implcita cuidad = 'tablaLiquidacionHonorarios'; // declaracin explcita mltiple var ciudad, provincia; // declaracin explcita mltiple con inicializacin var cuidad = La Plata, provincia = Buenos Aires; // declaracin implcita mltiple con inicializacin ciudad = La Plata, provincia = Buenos Aires; Tambin se pueden declarar constantes, por ejemplo el nmero pi, o un valor mximo. Se declaran con la sentencia const. Esta opcin slo es soportada a partir del motor 1.5 de JavaScript. Estas variables no pueden ser modificadas, sin embargo en navegadores en la que no son soportadas son tratadas como variables normales, pudiendo generarse errores con su modificacin.
Variables locales
Las variables locales tienen valor tan slo dentro de la funcin en que se han declarado, es decir, dentro del bloque de cdigo comprendido entre function(){ y la llave de cierre } y deben declararse dentro de estos bloques. <script type=text/JavaScript language=JavaScript> function miFuncion (){ var variableLocal } </script> Se puede declarar una variable local con el mismo nombre que una global, en este caso la variable global ser visible desde toda la pgina, excepto en el mbito donde est declarada
9/12
Variables globales
Las variables globales tienen valor para todo el documento HTML y se deben declarar al inicio del script y fuera de toda funcin: el lugar preferible es en las marcas <SCRIPT> de la seccin <HEAD> de tal manera que creemos los contenedores de los valores antes de darles cualquier uso. <script type=text/JavaScript language=JavaScript> var variableGlobal; </script> Todas las funciones dentro de la pgina pueden accederla. El tiempo de vida de estas variables comienza cuando son declaradas y termina cuando la pgina es cerrada.
Punteros y Parmetros
En JavaScript no existe manejo de punteros como en otros lenguajes. Internamente maneja como pasar los valores segn su tipo. Si son datos tipo primitivos los pasa como una copia pero si son objetos o funciones los pasa como referencia. Esto quiere decir que si pasamos un array u otro objeto como parmetro a una funcin y lo modificamos, estos cambios sern persistente al finalizar la funcin. En una funcin se puede pasar cualquier nmeros de parmetros y aquellos parmetros que no hayan sido declarados como tal en el cuerpo de la funcin, se encuentran almacenados en una variable de tipo object llamada arguments, que puede ser accedida como si fuera un array, esta variable es creada solo si se pasan parmetros que no se hayan definido en la cabecera de la funcin y su tiempo de vida y alcance comprende desde que se invoca la funcin hasta que esta termina.
10/12
Uso de la Memoria
En JavaScript el manejo de memoria est controlada por el navegador, esto no quiere decir que algn programa pueda controlar o administrar la memoria RAM, por tanto no existe un limite de memoria para un programa JavaScript pero si afecta al cliente. El mtodo de liberacin de memoria que se utiliza es el Garbage Collector, precisamente con algn algoritmo Mark-and-Sweep dependiendo del navegador web (en JavaScript 1.1 se utiliza el algoritmo Reference Counting dado que fue implementado en Netscape). Este tipo algoritmo funciona en dos pasos, el primero, es recorrer todas las variables declaradas en el entorno de JavaScript y poner una marca en los valores referenciados por ests, en el caso de que se un objeto o array lo hace de forma recursiva. En el segundo paso, hace un recorrido por la lista de valores y desaloca de memoria aquellos que no han sido marcados ya que esto indica que no han podido ser referenciados por ninguna variable. Adicionalmente, se provee a los objetos de un mtodo llamado finalize() que es invocado antes de que este sea desalocado de memoria. El objeto debe sobrescribir este mtodo para realizar cualquier tarea de limpieza final, como la liberacin de recursos del sistema (ficheros, conexiones, etc.). A partir de JavaScript 1.1, las variables pueden ser eliminadas de memoria al utilizar el operador delete salvo cuando estas referencian a los objetos en cuyo caso slo eliminan la referencia dejando al Garbage Collector como encargado de sacarla de memoria. El mayor problema a evitar en el manejo de memoria son las referencias circulares, estas surgen cuando se le asigna a una variable de JavaScript un objeto DOM (interfaz de programacin de aplicaciones para acceder, aadir y cambiar dinmicamente contenido estructurado en documentos con lenguajes como ECMAScript), y a este se le asigna la misma variable como atributo. Hacer esto implica que la variable siempre estar referenciada por un objeto DOM el cual posee un contador de referencias que maneja su permanencia en memoria, por tal motivo el Garbage Collector nunca podr eliminarla de la memoria y el objeto DOM tampoco se eliminar ya que es referenciado por esta misma variable. Ocurren tambin referencias circulares cuando se escriben funciones dentro de otras, porque cuando una funcin es escrita dentro de otra se mantiene una referencia a la que la incluye (para poder usar sus variables).
11/12
Conclusin
JAVASCRIPT es un lenguaje popular que cuenta con mucha documentacin y cdigos de ejemplo en internet. La forma de pasaje de parmetros, la declaracin y manejo de objetos y las operaciones entre diferentes tipos de variables junto con toda su sintaxis hacen de JavaScript un lenguaje muy flexible, pero a la vez poco legible si no se programa siguiendo alguna convencin en la escritura del cdigo. Otro aspecto importante de este lenguaje es la libertad que le brinda al programador de desligarse del manejo de los espacios en memoria y dedicar todo su esfuerzo en el desarrollo del cdigo de la aplicacin. Sin embargo, esta libertad no est libre de inconvenientes dado que al ser dedicado a la programacin web en la que se utilizan diferentes elementos fuera del mbito del propio lenguaje, se pueden generar fugas de memoria al establecerse referencias circulares. De todas formas, como su forma de manejar la memoria est dado por el navegador web y cada uno implementa su propio estilo, este ltimo problema se encuentra en continuo anlisis y desarrollo de mejoras.
Bibliografa
http://es.wikipedia.org http://www.desarrolloweb.com http://www.librosweb.es/ajax/
http://msdn.microsoft.com/es-es/library
12/12