Clases de variables

Antes de comenzar a desarrollar programas y utilidades con JavaScript, es necesario conocer los elementos básicos con los que se construyen las aplicaciones. Si ya sabes programar en algún lenguaje de programación, este capítulo te servirá para conocer la sintaxis específica de JavaScript.

Si nunca has programado, este capítulo explica en detalle y comenzando desde cero los conocimientos básicos necesarios para poder entender posteriormente la programación avanzada, que es la que se utiliza para crear las aplicaciones reales.

Variables

Las variables en los lenguajes de programación siguen una lógica similar a las variables utilizadas en otros ámbitos como las matemáticas. Una variable es un elemento que se emplea para almacenar y hacer referencia a otro valor. Gracias a las variables es posible crear “programas genéricos”, es decir, programas que funcionan siempre igual independientemente de los valores concretos utilizados.

numero_1 = 3
numero_2 = 1

resultado = numero_1 + numero_2

Los elementos numero_1 y numero_2 son variables que almacenan los valores que utiliza el programa. El resultado se calcula siempre en función del valor almacenado por las variables, por lo que este programa funciona correctamente para cualquier par de números indicado. Si se modifica el valor de las variables numero_1 y numero_2 , el programa sigue funcionando correctamente.

Las variables en JavaScript se crean mediante la palabra reservada var . De esta forma, el ejemplo anterior se puede realizar en JavaScript de la siguiente manera:

var numero_1 = 3;
var numero_2 = 1;
var resultado = numero_1 + numero_2;

Si cuando se declara una variable se le asigna también un valor, se dice que la variable ha sido inicializada. En JavaScript no es obligatorio inicializar las variables, ya que se pueden declarar por una parte y asignarles un valor posteriormente. Por tanto, el ejemplo anterior se puede rehacer de la siguiente manera:

var numero_1;
var numero_2;

numero_1 = 3;
numero_2 = 1;

var resultado = numero_1 + numero_2;

Una de las características más sorprendentes de JavaSript para los programadores habituados a otros lenguajes de programación es que tampoco es necesario declarar las variables. En otras palabras, se pueden utilizar variables que no se han definido anteriormente mediante la palabra reservada var . El ejemplo anterior también es correcto en JavaScript de la siguiente forma:

var numero_1 = 3;
var numero_2 = 1;
resultado = numero_1 + numero_2;

En cualquier caso, se recomienda declarar todas las variables que se vayan a utilizar. El nombre de una variable también se conoce como identificador y debe cumplir las siguientes normas:

  • Sólo puede estar formado por letras, números y los símbolos $ (dólar) y _ (guión bajo).
  • El primer carácter no puede ser un número.

Por tanto, las siguientes variables tienen nombres correctos:

var $numero1;
var _$letra;
var $$$otroNumero;
var $_a__$4;

Sin embargo, las siguientes variables tienen identificadores incorrectos:

var 1numero;  // Empieza por un número
var numero;1_123; // Contiene un carácter “;”

Tipos de variables

Aunque todas las variables de JavaScript se crean de la misma forma (mediante la palabra reservada var), la forma en la que se les asigna un valor depende del tipo de valor que se quiere almacenar (números, textos, etc.).

Numéricas.- Se utilizan para almacenar valores numéricos enteros (llamados integer en inglés) o decimales (llamados float en inglés). En este caso, el valor se asigna indicando directamente el número entero o decimal. Los números decimales utilizan el carácter. (punto) en vez de , (coma) para separar la parte entera y la parte decimal:

var iva = 16;             // variable tipo entero
var total = 234.65;  // variable tipo decimal

Cadenas de texto.- Se utilizan para almacenar caracteres, palabras y/o frases de texto. Para asignar el valor a la variable, se encierra el valor entre comillas dobles o simples, para delimitar su comienzo y su final:

var mensaje = “Bienvenido a nuestro sitio web”;
var nombreProducto = ‘Producto ABC’;
var letraSeleccionada = ‘c’;

En ocasiones, el texto que se almacena en las variables no es tan sencillo. Si por ejemplo el propio texto contiene comillas simples o dobles, la estrategia que se sigue es la de encerrar el texto con las comillas (simples o dobles) que no utilice el texto:

 

El contenido de texto1 tiene comillas simples, por lo que se encierra con comillas dobles

 

var texto1 = “Una frase con ‘comillas simples’ dentro”;

El contenido de texto2 tiene comillas dobles, por lo que se encierra con comillas simples.

 

var texto2 = ‘Una frase con “comillas dobles” dentro’;

No obstante, a veces las cadenas de texto contienen tanto comillas simples como dobles. Además, existen otros caracteres que son difíciles de incluir en una variable de texto (tabulador, ENTER , etc.) Para resolver estos problemas, JavaScript define un mecanismo para incluir de forma sencilla caracteres especiales y problemáticos dentro de una cadena de texto, veamoslo:

De esta forma, el ejemplo anterior que contenía comillas simples y dobles dentro del texto se puede rehacer de la siguiente forma:

var texto1 = ‘Una frase con \’comillas simples\’ dentro’;

var texto2 = “Una frase con \”comillas dobles\” dentro”;

Este mecanismo de JavaScript se denomina “caracteres de escape”.

Arrays

En ocasiones, a los arrays se les llama vectores, matrices e incluso arreglos. No obstante, el término array es el más utilizado y es una palabra comúnmente aceptada en el entorno de la programación.

Un array es una colección de variables, que pueden ser todas del mismo tipo o cada una de un tipo diferente. Su utilidad se comprende mejor con un ejemplo sencillo: si una aplicación necesita manejar los días de la semana, se podrían crear siete variables de tipo texto:

var dia1 = “Lunes”;
var dia2 = “Martes”;

var dia7 = “Domingo”;

Aunque el código anterior no es incorrecto, sí que es poco eficiente y complica en exceso la programación. Si en vez de los días de la semana se tuviera que guardar el nombre de los meses del año, el nombre de todos los países del mundo o las mediciones diarias de temperatura de los últimos 100 años, se tendrían que crear decenas o cientos de variables.

En este tipo de casos, se pueden agrupar todas las variables relacionadas en una colección de variables o array. El ejemplo anterior se puede rehacer de la siguiente forma:

var dias = [“Lunes”, “Martes”, “Miércoles”, “Jueves”, “Viernes”, “Sábado”, “Domingo”];

Ahora, una única variable llamada dias almacena todos los valores relacionados entre sí, en este caso los días de la semana. Para definir un array, se utilizan los corchetes [ ] para delimitar el comienzo y final y se utiliza la coma ( , ) para separar sus elementos:

var nombre_array = [valor1, valor2, …, valorN];

Una vez definido un array, es muy sencillo acceder a cada uno de sus elementos. Cada elemento se accede indicando su posición dentro del array. La única complicación, que es responsable de muchos errores cuando se empieza a programar, es que las posiciones de los elementos empiezan a contarse en el 0 y no en el 1 :

var diaSeleccionado = dias[0];  // diaSeleccionado = “Lunes”
var otroDia = dias[5];                 // otroDia = “Sábado”

En el ejemplo anterior, la primera instrucción quiere obtener el primer elemento del array. Para ello, se indica el nombre del array y entre corchetes la posición del elemento dentro del array. Como se ha comentado, las posiciones se empiezan a contar en el 0 , por lo que el primer elemento ocupa la posición 0 y se accede a el mediante dias[0].

El valor dias[5] hace referencia al elemento que ocupa la sexta posición dentro del array dias . Como las posiciones empiezan a contarse en 0 , la posición 5 hace referencia al sexto elemento, en este caso, el valor Sábado.

Variables booleanas

Las variables de tipo boolean o booleano también se conocen con el nombre de variables de tipo lógico. Aunque para entender realmente su utilidad se debe estudiar la programación avanzada con JavaScript del siguiente capítulo, su funcionamiento básico es muy sencillo.

Una variable de tipo boolean almacena un tipo especial de valor que solamente puede tomar dos valores: true (verdadero) o false (falso). No se puede utilizar para almacenar números y tampoco permite guardar cadenas de texto.

Los únicos valores que pueden almacenar estas variables son true y false , por lo que no pueden utilizarse los valores verdadero y falso. A continuación se muestra un par de variables de tipo booleano:

var clienteRegistrado = false;
var ivaIncluido = true;

Operadores

Las variables por sí solas son de poca utilidad. Hasta ahora, sólo se ha visto cómo crear variables de diferentes tipos y cómo mostrar su valor mediante la función alert() . Para hacer programas realmente útiles, son necesarias otro tipo de herramientas.

Los operadores permiten manipular el valor de las variables, realizar operaciones matemáticas con sus valores y comparar diferentes variables. De esta forma, los operadores permiten a los programas realizar cálculos complejos y tomar decisiones lógicas en función de comparaciones y otros tipos de condiciones.

Asignación

El operador de asignación es el más utilizado y el más sencillo. Este operador se utiliza para guardar un valor específico en una variable. El símbolo utilizado es =:

var numero1 = 3;

A la izquierda del operador, siempre debe indicarse el nombre de una variable. A la derecha del operador, se pueden indicar variables, valores, condiciones lógicas, etc:

var numero1 = 3;
var numero2 = 4;

Error, la asignación siempre se realiza a una variable, por lo que en la izquierda no se puede indicar un número:
5 = numero1;

Ahora, la variable numero1 vale 5
numero1 = 5;

Ahora, la variable numero1 vale 4
numero1 = numero2;

Sumar, restar

Estos dos operadores solamente son válidos para las variables numéricas y se utilizan para incrementar o decrementar en una unidad el valor de una variable.

var numero = 5;
++numero;
alert(numero);    // numero = 6

El operador de incremento (suma) se indica mediante el prefijo ++ en el nombre de la variable. El resultado es que el valor de esa variable se incrementa en una unidad. Por tanto, el anterior ejemplo es equivalente a:

var numero = 5;
numero = numero + 1;
alert(numero);   // numero = 6

De forma equivalente, el operador decremento (indicado como un prefijo en el nombre de la variable) se utiliza para decrementar el valor de la variable:

var numero = 5;
–numero;
alert(numero);    // numero = 4

Los operadores de incremento y decremento no solamente se pueden indicar como prefijo del nombre de la variable, sino que también es posible utilizarlos como sufijo. En este caso, su comportamiento es similar pero muy diferente. En el siguiente ejemplo:

var numero = 5;
numero++;
alert(numero);    // numero = 6

El resultado de ejecutar el script anterior es el mismo que cuando se utiliza el operador ++numero , por lo que puede parecer que es equivalente indicar el operador ++ delante o detrás del identificador de la variable. Sin embargo, el siguiente ejemplo muestra sus diferencias:

var numero1 = 5;
var numero2 = 2;
numero3 = numero1++ + numero2;
// numero3 = 7, numero1 = 6

var numero1 = 5;
var numero2 = 2;
numero3 = ++numero1 + numero2;
// numero3 = 8, numero1 = 6

Si el operador ++ se indica como prefijo del identificador de la variable, su valor se incrementa antes de realizar cualquier otra operación. Si el operador ++ se indica como sufijo del identificador de la variable, su valor se incrementa después de ejecutar la sentencia en la que aparece.

Por tanto, en la instrucción numero3 = numero1++ + numero2; , el valor de numero1 se incrementa después de realizar la operación (primero se suma y numero3 vale 7 , después se incrementa el valor de numero1 y vale 6 ). Sin embargo, en la instrucción numero3 = ++numero1 + numero2; , en primer lugar se incrementa el valor de numero1 y después se realiza la suma (primero se incrementa numero1 y vale 6 , después se realiza la suma y numero3 vale 8 ).

Lógicos

Los operadores lógicos son imprescindibles para realizar aplicaciones complejas, ya que se utilizan para tomar decisiones sobre las instrucciones que debería ejecutar el programa en función de ciertas condiciones. El resultado de cualquier operación que utilice operadores lógicos siempre es un valor lógico o booleano.

Negación

Uno de los operadores lógicos más utilizados es el de la negación. Se utiliza para obtener el valor contrario al valor de la variable:

var visible = true;
alert(!visible);    // Muestra “false” y no “true”

La negación lógica se obtiene anteponiendo el símbolo ! al identificador de la variable. El funcionamiento de este operador se resume en la siguiente tabla:

Si la variable original es de tipo booleano, es muy sencillo obtener su negación. Sin embargo, ¿qué sucede cuando la variable es un número o una cadena de texto? Para obtener la negación en este tipo de variables, se realiza en primer lugar su conversión a un valor booleano:

  • Si la variable contiene un número, se transforma en false si vale 0 y en true para cualquier otro número (positivo o negativo, decimal o entero).
  • Si la variable contiene una cadena de texto, se transforma en false si la cadena está vacía ( “” ) y en true en cualquier otro caso.

var cantidad = 0;
vacio = !cantidad;   // vacio = true

cantidad = 2;
vacio = !cantidad;   // vacio = false

var mensaje = “”;
mensajeVacio = !mensaje;    // mensajeVacio = true

mensaje = “Bienvenido”;
mensajeVacio = !mensaje;    // mensajeVacio = false

AND

La operación lógica AND obtiene su resultado combinando dos valores booleanos. El operador se indica mediante el símbolo && y su resultado solamente es true si los dos operandos son true:

var valor1 = true;
var valor2 = false;
resultado = valor1 && valor2;    // resultado = false

valor1 = true;
valor2 = true;
resultado = valor1 && valor2;    // resultado = true

OR

La operación lógica OR también combina dos valores booleanos. El operador se indica mediante el símbolo || y su resultado es true si alguno de los dos operandos es true:

var valor1 = true;
var valor2 = false;
resultado = valor1 || valor2; // resultado = true

valor1 = false;
valor2 = false;
resultado = valor1 || valor2; // resultado = false

Matemáticos

JavaScript permite realizar manipulaciones matemáticas sobre el valor de las variables numéricas. Los operadores definidos son: suma (+), resta (), multiplicación (*) y división (/).

var numero1 = 10;
var numero2 = 5;

numero1 / numero2;  //resultado = 2
3 + numero1;               //resultado = 13
numero2 – 4;                //resultado = 1
numero1 * numero 2;  //resultado = 50

Además de los cuatro operadores básicos, JavaScript define otro operador matemático que no es sencillo de entender cuando se estudia por primera vez, pero que es muy útil en algunas ocasiones.

Se trata del operador “módulo”, que calcula el resto de la división entera de dos números. Si se divide por ejemplo 10 y 5 , la división es exacta y da un resultado de 2 . El resto de esa división es 0 , por lo que módulo de 10 y 5 es igual a 0.

Sin embargo, si se divide 9 y 5 , la división no es exacta, el resultado es 1 y el resto 4 , por lo que módulo de 9 y 5 es igual a 4.

El operador módulo en JavaScript se indica mediante el símbolo %, que no debe confundirse con el cálculo del porcentaje:

var numero1 = 10;
var numero2 = 5;
resultado = numero1 % numero2; // resultado = 0

numero1 = 9;
numero2 = 5;
resultado = numero1 % numero2; // resultado = 4

Los operadores matemáticos también se pueden combinar con el operador de asignación para abreviar su notación:

var numero1 = 5;

numero1 += 3; // numero1 = numero1 + 3 = 8
numero1 -= 1;   // numero1 = numero1 – 1 = 4
numero1 *= 2;  // numero1 = numero1 * 2 = 10
numero1 /= 5;  // numero1 = numero1 / 5 = 1
numero1 %= 4; // numero1 = numero1 % 4 = 1

Relacionales

Los operadores relacionales definidos por JavaScript son idénticos a los que definen las matemáticas: mayor que (>), menor que (<), mayor o igual (>=), menor o igual (<=), igual que (==) y distinto de (!=).

Los operadores que relacionan variables son imprescindibles para realizar cualquier aplicación compleja. El resultado de todos estos operadores siempre es un valor booleano:

var numero1 = 3;
var numero2 = 5;

resultado = numero1 > numero2;   // resultado = false
resultado = numero1 < numero2;  // resultado = true

numero1 = 5;
numero2 = 5;

resultado = numero1 >= numero2;  // resultado = true
resultado = numero1 <= numero2;  // resultado = true
resultado = numero1 == numero2;  // resultado = true
resultado = numero1 != numero2;   // resultado = true

Se debe tener especial cuidado con el operador de igualdad (==), ya que es el origen de la mayoría de errores de programación, incluso para los usuarios que ya tienen cierta experiencia desarrollando scripts. El operador == se utiliza para comparar el valor de dos variables, por lo que es muy diferente del operador = , que se utiliza para asignar un valor a una variable:

// El operador “=” asigna valores
var numero1 = 5;
resultado = numero1 = 3;    // numero1 = 3 y resultado = 3

// El operador “==” compara variables
var numero1 = 5;
resultado = numero1 == 3;    // numero1 = 5 y resultado = false

Los operadores relacionales también se pueden utilizar con variables de tipo cadena de texto:

var texto1 = “hola”;
var texto2 = “hola”;
var texto3 = “adios”;

resultado = texto1 == texto3; // resultado = false
resultado = texto1 != texto2; // resultado = false
resultado = texto3 >= texto2; // resultado = false

Cuando se utilizan cadenas de texto, los operadores “mayor que” (>) y “menor que” (<) siguen un razonamiento no intuitivo: se compara letra a letra comenzando desde la izquierda hasta que se encuentre una diferencia entre las dos cadenas de texto. Para determinar si una letra es mayor o menor que otra, las mayúsculas se consideran menores que las minúsculas y las primeras letras del alfabeto son menores que las últimas ( a es menor que b , b es menor que c , A es menor que a , etc.).

Anuncios