Buscador

Los Tipos de datos especiales

En Javascript, existen varios tipos de datos especiales: Undefined, Null, Infinity y NaN. No pueden utilizarse como constantes, pero hay variables con esos nombres que pueden utilizarse cuando se requieran tales valores. NaN significa (Not a Number) y se usa para aquellas operaciones matemáticas que no tienen sentido, dentro del contexto de una expresión. No hay que confundirlo con Null, que significa que tiene un significado “no hay datos” como valor en diferentes contextos, ni con undefined, utilizándose para los casos en los que el contenido de una variable no está claro en absoluto y nada –ni siquiera null- se ha llegado a almacenar. En esos casos el contenido de la variable está indefinido (undefined), aunque en muchas ocasiones se utiliza como sinónimo de Null. En el caso de que
tengamos que determinar exactamente el tipo de datos almacenado, las funciones isNaN(), isFinite() y typeof(), cumplen perfectamente con esa función. No obstante, el uso de algunos de estos valores se reserva exclusivamente para las últimas versiones de los navegadores.
Un posible ejemplo de utilización sería el que muestra el Código fuente 59
var NaN = 0/0;
var Infinity = 1e300 * 1e300;

Tipeof

El operador tipeof va seguido de una expresión, y nos devuelve una cadena de text que referencia el tipo de tal expresión. Así, si aplicamos este operador sobre una expresión nos devolverá si la expresión es un objeto, o un dato numérico, cadena de caracteres...
Su sintaxis es:

typeof operando
typeof (operando)
Los posibles valores a devolver por este operador son:
• Object para un objeto
• Function para una función
• Number para numerales
• String para cadenas de caracteres
• Boolean para variables booleanas
Las sentencias de Javascript son cadenas de texto pueden ocupar múltiples líneas, aunque también se
da el caso de que múltiples sentencias se aúnen en una sola línea, debiendo entonces separar las
sentencias con punto y coma (;).

this

El operador this es utilizado cuando nos queremos referir al objeto actual. Si estamos en un objeto determinado, como puede ser un control, y nos queremos referir a las propiedades de dicho control, nos referiremos al objeto actual como this.
De este modo, para referirnos a la propiedad o método del objeto actual, la sintaxis será:
this.Propiedad

Belcorp es reconocida entre las empresas top ten del ranking Direct Selling News

El operador New sirve para crear una instancia de un objeto, bien sea definido por el usuario, o uno predefinido en el lenguaje. Estos objetos de lenguaje incorporan su propia función de construcción (también llamado Constructor). En definitiva, sirve para crearnos en nuestro script una réplica de un objeto ya creado, y que posteriormente personalizaremos (o no).
El modo de representación de este operador es como se muestra a continuación:
Nombre_Objeto = new Tipo_Objeto (Parámetros)
• El nombre del Objeto será el que queramos darle nosotros a la instancia que estamos creando de tal objeto.
• El tipo de Objeto se corresponderá con la función de construcción del objeto del que queremos crearnos la instancia.
• Los parámetros serán los correspondientes a la función de construcción de tal objeto.

delete

Este es uno de los operadores con los que trabajaremos objetos o listas. El operador Delete es utilizado para el borrado de una propiedad o un elemento de una posición específica de un array.
Existen dos sintaxis fundamentales para Delete:
• Borrado de la propiedad de un objeto:
delete Nombre_Objeto.Propiedad
• Borrado del elemento de un Array:
delete Nombre_Objeto [índice en el array]

Operador Coma (,)

El operador coma, es muy simple. Separa dos o más expresiones, evaluándolas, y devolviendo el valor de la segunda expresión.
Su sintaxis es la que sigue:
Expresión-1, expresión-2
El operador Coma es utilizable para ubicar múltiples expresiones en lugares en los que solo se requiere una expresión sencilla.

Operador condicional (?:)

El operador condicional es utilizado como abreviatura de código. Una condición se acompaña de dos expresiones, devolviendo la primera si la condición es verdadera, o la segunda, si la condición es falsa.
La sintaxis de este operador es la siguiente:
Condición ? Expresión-1 : Expresión-2
Que debemos entender como:
Si Condición entonces Expresión-1 sino Expresión-2

Operadores especiales

En Java Script existen una serie de operadores especiales, utilizados generalmente como abreviación de código, o para trabajo directo con objetos y sus propiedades o métodos.

Not a nivel de bit (~)

Al igual que los otros operadores de su clase, convierte el operando binario, y aplica sobre cada cifra binaria una operación no estándar.
Una operación no a nivel de bit resultaría como indica la Tabla 10

Or a nivel de bit (|)

Este operador funciona como todos los operadores de desplazamiento de registro, transformando los operandos a binario, los parea por orden, y ejecuta sobre las parejas de bits la operación Or standard.
Así, una operación Or a nivel de bit se ejecutaría como indica la Tabla 9.

And a nivel de bit (&)

El operador &, al ser un operador de desplazamiento de bit, convierte los operandos a binario, parea los bits de un operando con los del otro, pareándolos. Entonces, aplica la operación AND estándar a esos pares de bits, tomando 1 como Verdadero, y 0 como Falso.
Como muestra la Tabla 8 se realizaría una operación AND a nivel de bit.

Operadores de desplazamiento

Estos operadores funcionan tratando sus operandos como conjuntos de bits sea cual sea la base numérica que estos utilizan, pudiendo comparar así números en base decimal con otros de otra base numeral diferente, puesto que estos operadores comparan los valores en base binaria.
Aunque la ejecución se produce a nivel binario, retornan un dato estándar Javascript. Los operadores de desplazamiento de bit, transforman sus operandos en cadenas binarias de 32 bits. Cada bit del primer operando es pareado con su correspondiente, en orden, del segundo operando. Posteriormente es aplicada la operación correspondiente a cada par de bits (uno de un operando, y otro del otro
operando).

Operadores de asignación

Los operadores de asignación son los utilizados para hacer que el valor de una variable adquiera el especificado en la operación de asignación. En la Tabla 7, se especifica la lista de operadores de asignación así como sus significados.

Operadores de cadenas de texto

Los operadores de cadena se ubican entre dos cadenas de texto, con la finalidad de que la operación realizada sobre ellos, devuelva una sola cadena de texto. Existen en Javascript dos operadores de cadena, cuya función es concatenar las cadenas de texto a las que se refiere. Los dos tipos de operadores de concatenación son:
• Concatenación con espacio (+)
• Concatenación sin espacio (+=)
La utilización de estos operadores es la que muestra la Tabla 6.

Or ( || )

El operador || es opuesto a && en tanto en cuanto a que este operador, situado entre dos expresiones, devuelve el valor booleano verdadero sólo con que una de las expresiones que evalúa sea verdadera.
A continuación, vemos las correspondencias:
V || V = V
V || F = V
F || V = V
F || F = F

Not (!)

El operador ! devuelve el valor contrario de una expresión, de forma que si la expresión es verdadera, la aplicación de este operador sobre esa variable devolverá Falso, mientras que si la expresión original es falsa, la aplicación del operador ! devolverá verdadero.

Operadores lógicos

Los operadores lógicos devuelven un valor Booleano (verdadero / falso) en función de las expresiones que estos evalúen. Javascript permite los siguientes operadores lógicos:
And ( && )
El operador && devuelve Verdadero cuando las dos expresiones que evalúa son verdaderas, de tal forma x && y devuelve verdadero solo cuando tanto X como Y son verdaderas. A continuación se especifican todas las situaciones.
V && V = V
F && V = F
V && F = F

F && F = F

Negación (-)

El operador de negación precede a una variable o constante, y se utilizará para convertir el valor de una expresión en su opuesto, o para cambiar de signo un valor.
-x

Operador de Decremento (--)

El decremento es semejante al operador anterior, aunque en lugar de incrementar una unidad, la resta de la variable que preceda al operador.
x -- //Equivale a x = x - 1
-- x //Equivale a x = x - 1, pero decrementa la variable primero, antes de usarse Al igual que el operador de incremento, en una asignación no actúa igual Y = --X que Y = X-- Ya que la primera decrementa X antes de asignar el valor a Y, mientras que la segunda asigna a Y el valor de X ya decrementado.

Operador de Auto-incremento (++)

Este operador se utiliza para incrementar el valor de una variable en una unidad, sea el tipo que sea la base numeral utilizada.
x ++ //Equivale a x = x + 1
++ x //Equivale a x = x + 1, pero incrementa la variable primero,
antes de usarse
El operador de incremento se puede usar de dos formas diferentes cuando lo asignamos a una variable, de forma que si declaramos que Y = X++ para un valor de X = 5, primero se asignará el valor a Y, y luego se incrementará la variable X. Así, queda X = 6 e Y = 5.
Si declararemos la asignación del otro modo, Y = ++X para el mismo valor de X, primero se incrementaría la X, y después se asignaría el valor a la variable Y. Así, el resultado de la operación sería el siguiente: X = 6 e Y = 6

Aritméticos

Los operadores aritméticos toman una pareja de valores y devuelven uno solo. Los operadores
estándar son:
• Adición (+)
• Substracción (-)
• Multiplicación (*)
• División (/)
Aparte de estos, el lenguaje aporta los siguientes operadores adicionales:
Modulo (%)
Devuelve el resto resultante de la división de los valores iniciales, lo vemos en el Código fuente 58.
z = x % y
20 % 6 = 2

Operadores De comparación

Son los utilizados para comparar valores, constantes o variables, siempre que estas sean del mismo tipo, esto es, semejantes. Entendiendo por tal, que -caso de no ser idénticas- puedan ser convertidas al tipo adecuado para la comparación.
Los operadores de comparación estándar de Javascript son:
• Igualdad ( = = )
• Mayor que ( >)
• Menor que ( < ) • Mayor o igual (> = )
• Menor o igual ( <= )
• Distinto ( != )

Operadores

Javascript define un amplio conjunto de operadores, que podemos analizar por categorías: de comparación, aritméticos, lógicos, de concatenación de cadena, de asignación y de desplazamiento

Sentencias

Un programa en Javascript es una colección de sentencias, combinadas de una forma dada para permitir la ejecución de una tarea. Una sentencia consta de una o más expresiones formadas mediante palabras reservadas, operadores, estructuras de control y otros elementos del lenguaje. En Javascript se utiliza el símbolo de punto y coma para indicar la finalización de una sentencia.
Para agrupar sentencias, utilizaremos sin embargo las llaves {, }, tal y como veremos en el apartado dedicado a las estructuras de control.

Características del lenguaje Javascript

Como cualquier otro lenguaje de script Javascript no genera ejecutables, sino que se basa en una librería de Runtime (tiempo de ejecución), que interpreta las sentencias según son invocadas por los mecanismos programados al efecto. No obstante, Javascript pone a disposición del programador una serie de recursos propios en forma de operadores, palabras reservadas, estructuras de control,
declaración de variables, y sentencias de todo tipo, así como un conjunto de convenciones lingüísticas que deben de respetarse si se quiere codificar de acuerdo con el estándar. Vamos revisar lo más importante de sus características, y –a continuación- propondremos una serie de ejercicios típicos para que el lector pueda juzgar sus posibilidades a partir de situaciones reales, en lugar de abordar ejemplos
para cada operador, estructura, palabra reservada, etc. Al lector interesado en un manual exhaustivo de Javascript podemos recomendarle “Javascript Unleashed”, de R. Wagner, Ed. SAMS.

Objetos de Java Script de servidor

Los objetos de script de servidor son los encargados de enlazar con fuentes de datos de cualquier tipo, almacenadas en el servidor, bien en forma de Base de datos, bien en forma de archivo de datos, que en su versión más actualizada puede adoptar el formato XML para independizarse completamente de la plataforma que lo soporta. A continuación mostramos en la Figura 28, un típico modelo de objetos de servidor.


No obstante, al no ser materia de este curso vuelvo a remitir al lector a las referencias del capítulo 1º si desea obtener más información sobre este apartado. Nosotros vamos a centrarnos ahora en el script de cliente, en las características del lenguaje, y en el propio modelo de objetos de Javascript.

Javascript y el escenario de ejecución

Como cualquier otro lenguaje de script, Javascript puede utilizarse para construir páginas de servidor
o de cliente. Y como es lógico, dependiendo de ese escenario de ejecución, tendrá acceso a diferentes
modelos de objetos. Ya vimos el modelos de objetos de documento (DOM) que representa al
navegador, en el caso del cliente.
Los Scripts de servidor se utilizan para realizar operaciones sobre objetos del servidor, tales como la
ejecución de una conexión sobre una base de datos existente, una consulta SQL o un acceso a su
sistema de archivos, por lo tanto el modelo de objetos variará según se trate de un servidor u otro
(Internet Information Server, Oracle Web Server, Apache Web Server, etc.).
A diferencia de los scripts de cliente, los de servidor se ejecutan como si de un programa
ejecutable.EXE se tratase, aunque enviando el resultado a un navegador. Pero para ello, es necesario
que la página se almacene en el servidor en una carpeta ejecutable, y que este tenga instalado el
"Javascript Runtime Engine" o motor de Javascript, que será el encargado de procesar las páginas que
contengan este tipo de código. Al operar de esta forma, se devuelven al usuario los resultados de la
ejecución del código de servidor, y no el propio código, que no sería capaz de interpretar.
En contraste con los CGI standard (Common Gateway Interface) los programas en Javascript, están
embebidos en la página, junto con el código HTML facilitando enormemente el mantenimiento de las
páginas.

Oficialidad, Autoría y Estandarización

En cuanto al aspecto oficial del establecimiento de estándares, hay que recordar que –en este caso- no
es la W3C la encargada de su promoción y publicación como estándar, sino otra entidad de
normalización: ECMA. El lector interesado, puede consultar la página web oficial del sitio ECMA
(www.ecma.ch) y descargar la especificación, tal y como está publicada allí, al ser un documento
público. Respecto a su autoría, el propio documento oficial del estándar nos dice que:

“Este estándar ECMA está basado en varias tecnologías originales bien conocidas, entre las que destacan JavaScript (Netscape), y JScript (Microsoft). El lenguaje fue inventado por Brendan Eich, de Netscape y apareció por primera vez en la versión 2.0 de Navigator. Ha continuado apareciendo en todos los navegadores posteriores, así como en todos los navegadores de Microsoft, comenzando por la versión 3.0 de Internet Explorer.
El desarrollo de éste estándar comenzó en Noviembre de 1996. La primera edición del estándar ECMA fue adoptado por la Asamblea General de ECMA en Junio de 1997.

Dicho estándar fue enviado a ISO/IEC JTC 1 para su adopción y aprobado como estándar internacional ISO/IEC 16262, en Abril de 1998. La Asamblea General de ECMA de Junio de 1998, aprobó la segunda edición de ECMA-262 para mantenerla totalmente en consonancia con el ISO/IEC 16262. Los cambios producidos entre la primera y la segunda versión, son de carácter meramente editorial“.
3
Microsoft, que desde hace un par de años parece mostrar una voluntad decididamente más cercana a la adopción de estándares, proclama que la versión de Javascript incluida en sus navegadores (especialmente a partir de la versión 5.x), cumple rigurosamente con dicho estándar e incluso sugiere utilizar el atributo language = “ECMAScript” al construir páginas de cliente.