Читать книгу: «Aprender Javascript Avanzado con 100 ejercicios prácticos», страница 3
012 Operadores de comparación
LOS OPERADORES DE COMPARACIÓN COMPARAN SUS operandos, los cuales pueden ser números, cadenas de texto, lógicos u objetos, y devuelven como resultado un valor lógico según si la comparación establecida es o no verdadera. De hecho, todos los operadores de igualdad estudiados en el ejercicio anterior forman parte de este grupo de operadores. Además de los operadores de igualdad, los de comparación son los siguientes: >, >=, < y <=.
1. En este ejercicio, le mostraremos cómo se utilizan los opera-dores de comparación en JavaScript. Como se ha indicado en la introducción, son cuatro, además de los operadores de igualdad tratados en el ejercicio anterior, los operadores de comparación:
> (mayor que)
>= (mayor o igual que)
< (menor que)
<= (menor o igual que)
2. Los cuatro operadores de comparación funcionan tanto para números como para cadenas de texto. Sin embargo, cabe señalar que en el caso de las cadenas de texto, el uso de este tipo de operadores no es demasiado recomendable puesto que hacen distinción entre mayúsculas y minúsculas y no gestionan características como, por ejemplo, los acentos.
3. El operador > devuelve el valor true siempre y cuando el operando izquierdo sea mayor que el derecho. Vea como ejemplo las siguientes sentencias:
caso2 > caso1
// la variable caso1 tiene el valor 3
y la variable caso2, el valor 10
“120” > 111
4. El operador >= devuelve el valor true en el caso en que el operando izquierdo sea igual o mayor que el derecho. Un par de ejemplos del uso de estos operadores serían las siguientes sentencias:
caso2 >= caso1
// la variable caso1 tiene el valor 3
y la variable caso2, el valor 10
caso1 >= 10
5. El siguiente operador de comparación es < , que permite devolver el valor true si el operando izquierdo es menor que el derecho. Siguiendo con nuestros ejemplos con las variables caso1 y caso2 , mire estas sentencias:
caso1 < caso2
// la variable caso1 tiene el valor 3
y la variable caso2, el valor 10
“120” < “111”
6. El último de los operadores de comparación que trataremos en este ejercicio es <=, que devuelve true en el caso en que el operando de la izquierda sea menor o igual que el de la derecha. Vea un claro ejemplo en las líneas siguientes:
caso1 <= caso2
// la variable caso1 tiene el valor
y la variable caso2, el valor 10
caso2 <= 10
013 El caso del operador +
IMPORTANTE
El operador + examina, ante todo, los operandos situados a izquierda y a derecha. Si uno de estos operandos es una cadena de texto o caracteres, entonces el otro también es convertido en cadena de texto y ambos, concatenados.
EL OPERADOR + SE COMPORTA DE maneras distintas según si los operandos con los que trabaja son números, textos u otro tipo de datos. Así, actuará sencillamente como un operador aritmético cuando se trata de números o bien servirá para concatenar elementos cuando trabaja con textos u otros datos.
1. Debido a sus comportamientos especiales en determinados momentos, hemos creído conveniente dedicar un ejercicio al operador + (más). Debemos tener en cuenta que JavaScript estudia y determina en cada momento con qué tipo de datos está tratando, y es por eso que puede decidir cómo debe comportarse, por ejemplo, el operador +.
2. El operador + realiza una suma cuando el programa interpreta que ambos operandos son números:
valor1 = 5
valor2 = 8
resultado = 10 + valor2;
3. En este caso, JavaScript interpreta que la variable resultado almacenará el valor resultante de la suma 10 + 8. En ocasiones, puede ocurrir que en lugar de interpretar los valores como numéricos, los interprete como cadenas de caracteres o como cadenas y números. Es en estos casos que el operador + actúa de concatenador, es decir, realiza combinaciones entre valores en lugar de sumarlos.
En este caso, ni el uso de las comillas permite interpretar a JavaScript que se trata de números, sino que los lee como cadenas de caracteres.
4. El ejemplo anterior, el de la concatenación de textos, puede ser solventado mediante dos procedimientos: eliminando las comillas incluidas en la descripción de las variables o bien utilizando el método Number(). El primer procedimiento quedaría como sigue:
var valor1 = 5;
var valor2 = 8;
document.write(valor1 + valor2);
Para poder distinguir en su editor de textos web si está trabajando con valores numéricos o textuales, sepa que los números se muestran de color azul y los caracteres, de color rojo.
5. Y el resultado sería el esperado, es decir, 13. El empleo del método Number() resulta también del todo eficaz. ¿Cómo funciona este método? Muy sencillo. Permitiendo que el programa convierta en número cualquier cadena de caracteres. El modo en que se utiliza este método es el siguiente:
var valor1 = ‘5’;
var valor2 = ‘8’;
document.write(Number(valor1) + Number(valor2));
6. Como ve, en este caso es necesario recuperar las comillas en la definición de las variables para que el método Number() realice correctamente la conversión entre datos. El signo + realiza así la suma de los dos valores. Dicho esto podemos acabar diciendo que el operador + realiza una suma de valores cuando, al tratarse de operandos distintos, puede convertirlos a ambos en valores numéricos. En cualquier otro caso, el operador + realizará una concatenación de valores.
014 Operadores lógicos
LOS DATOS BOOLEANOS DISPONEN DE OPERADORES específicos que producen resultados de cada uno de estos tipos. Los operadores booleanos son && (AND) y || (OR) y el no lógico ! (NOT).
1. En este ejercicio trataremos los operadores lógicos y los numéricos. Los operadores lógicos son lo que producen valores booleanos y se asignan a operandos de este tipo. Se utilizan para realizar operaciones lógicas, es decir, aquellas que producen resultados verdaderos o falsos (true o false).
En este ejemplo, se evalúan dos comprobaciones mediante un operador lógico. En la primera de estas comprobaciones, x==2 dará como resultado truesiempre y cuando la variable denominada x valga 2 . En la segunda comprobación, y!=3 dará como resultado true si la variable denominada y tiene un valor distinto de 3.
2. El primero de estos operadores, conocido como binario, es && , es decir, AND. En una sentencia que confronte dos operandos, dicha operación producirá el primero de los operandos siempre y cuando este valor pueda convertirse en false ; si no, dará como resultado el otro operando. Si los dos operandos son verdaderos, el valor producido es true y si no, producirá false.
if (numFav < 20 && numFav > 1) {
document.write(“<p>¡Perfecto!</p>”);
}
3. Éste es un ejemplo en que se utiliza el operador lógico && para comparar dos valores. Si el valor de la variable denominada numFav es menor que 20 y también mayor que 1, entonces la operación producirá el valor true y, consecuentemente, aparecerá escrito en pantalla (document.write) el mensaje indicado. Pasemos ahora al segundo operador lógico que queremos tratar, el operador || , es decir, OR. En una sentencia que confronte dos operandos, el operador producirá como resultado true en el caso en que uno de los dos operandos sea verdadero; en el caso en que ambos valores sean falsos, entonces el resultado será false .
if (numFav==7 || numFav==9) {
document.write(“<p>¡El mío también!</p>”);
}
4. El ejemplo sería idéntico al anterior aunque sólo debe cumplirse una de las dos condiciones mostradas en los dos operandos. Existe un tercer operador booleano que es no lógico y se representa con el signo !. Este operador sólo cuenta con un operando, el cual debe poder convertirse en verdadero para que el operador produzca un resultado false. Si no es así, el resultado que devolverá será true. Un ejemplo sencillo de este operador es el siguiente:
if (x==2 && y!=3)
5. En el cual como puede verse se utilizan dos de los operadores aquí mencionados: el operador && y el operador negativo !. Es el segundo operando el que contiene este operador. En los ejercicios siguientes trataremos con todo detalle otros tipos de operadores de JavaScript: los numéricos y otros denominados especiales.
015 Operadores numéricos y especiales
LOS OPERADORES NUMÉRICOS O ARITMÉTICOS, IGUAL que ocurre con los booleanos, trabajan con operandos del tipo Number y, por tanto, producen resultados sólo de este tipo. Los opera-dores numéricos son los aritméticos en todas sus combinaciones (+ - * / % ++ --). Por su parte, existen tres tipos de operadores conocidos como especiales: el operador condicional (?:) y el operador coma (,).
1. En un ejercicio anterior tuvimos un primer contacto con los operadores aritméticos básicos (+ - * /). En este ejercicio trataremos otro tipo de operador aritmético o numérico: se trata de la combinación ++ y -- , que puede situarse delante o detrás de un valor numérico incluido en una variable.
En estas dos funciones puede ver que se utilizan en determinados puntos de las distintas sentencias diversos operadores aritméticos, entre los cuales se encuentra el operador ++ detrás del nombre de la variable puntos.
2. La posición de cada uno de estos operandos puede ayudarle a recordar si el resultado devuelto se situará antes o después de la suma (++) o la resta (--). En el caso en que el operando esté situado detrás del operador ++ , el resultado va antes del incremento. Y viceversa.
Estos ejemplos son básicos para ayudar a comprender con sencillez el uso de estos operadores.
3. Veamos esta descripción en ejemplos. Los operadores ++ y --situados delante del nombre de la variable devuelven el valor actual de dicha variable más o menos 1. Estas líneas son una muestra de este uso:
caso1 = 15;
++caso1
16
4. Y también:
caso1 = 15;
--caso1
14
5. Como hemos indicado, la posición de estos operadores puede cambiar respecto a la variable que acompañan. En este caso, el incremento o el decremento se realiza antes y después se devuelve el resultado. Veamos un ejemplo básico de ello:
caso1 = 15;
caso1++
15
caso1 = 16
6. Pasemos ahora a tratar brevemente otro tipo de operadores, que se consideran especiales debido a su uso concreto en determinados scripts. El operador condicional ?: sirve para realizar expresiones condicionales, sin tener en cuenta el grado de complejidad de las mismas. Si la condición escrita es verdadera, dará como resultados el valor if_true ; de otro modo, si la condición no es cierta, el resultado será if_false.
El operador condicional ?: se puede utilizar como forma abreviada de una sentencia condicional del tipo if ... else.
7. El operador, (coma) es para las expresiones lo que el punto y coma es para las sentencia. Su procedimiento consiste en evaluar los dos operandos a los que acompaña y devuelve como resultado el valor right.
Debido a que puede llevar a confusión en el caso de scripts muy largos, es recomendable no utilizar el operador , y optar por la separación habitual de sentencias, es decir, con un ;
IMPORTANTE
Más adelante en este libro volveremos a dedicarnos a estos tipos de operadores para profundizar mejor en su uso y funcionamiento en JavaScript.
016 Comprobar datos en JavaScript
IMPORTANTE
En muchas ocasiones, resulta recomendable utilizar otras funciones para cambiar los tipos de datos de una variable antes de utilizar el operador typeof. Una de estas funciones es parseInt().
COMO HEMOS PODIDO COMPROBAR HASTA EL momento, el uso de operadores concretos y de operaciones realizadas depende del tipo de datos con el que se asocien dichos operadores. La comprobación de datos se puede llevar a cabo con un operador especial: el operador typeof , el cual nos envía un texto que contiene el tipo de datos objeto de nuestra comprobación.
1. Debido a su utilidad, hemos creído conveniente dedicar un ejercicio completo al operador typeof , aunque en una lección anterior (008) ya tuvimos la ocasión de nombrarlo y describirlo brevemente.
Tal y como se trató en un ejercicio anterior, el uso de typeof para categorizar si un dato es un undefined o null es una de las soluciones para llevar a cabo esta comprobación.
2. Typeof es un operador que devuelve una cadena o string que describe el tipo de dato que corresponde con el objeto, ya sea una variable, una función..., que se escribe a continuación. Más concretamente, el operador typeof distingue los valores primitivos de los objetos y, en el caso de las primitivos, determina el tipo al que pertenecen: “number”, “string”, “boolean”, “object”, “function” y “undefined”.
3. En el caso de los datos booleanos, como recordará, los valores que se manejan son true y false.
4. ¿Cómo se utiliza en un script el operador typeof ? A continuación le mostramos un ejemplo para cada uno de los tipos de datos más básicos:
var booleano = false;
alert(“Tipo de dato: “ + typeof booleano)
var numero = 107;
alert(“Tipo de dato: “ + typeof numero)
var caracteres = “Barcelona”;
alert(“Tipo de dato: “ + typeof caracteres)
var hoy = newDate();
alert(“Tipo de dato: “ + typeof hoy)
5. Los resultados que devolverá el operador typeof para cada uno de estos tipos será Boolean, Number, String y Object (Object corresponde a una función, elemento distinto a los datos primitivos).
6. Los paréntesis en el uso del operador typeof son totalmente opcionales; aplíquelos cuando crea que pueden ayudar a la comprensión y la lectura del script.
7. A modo informativo diremos que los números, tanto enteros como decimales, siempre son del tipo Number.
8. Además de distinguir entre datos primitivos y objetos, typeof también permite comprobar métodos (parseInt()), valores de propiedades (window.length o document.lastModified) y objetos predefinidos (Math u Object).
017 El operador ‘instanceof’
ASÍ COMO EL OPERADOR TYPEOF SE utiliza en JavaScript para distinguir entre los diferentes datos primitivos y los objetos, existe otro operador que permite comprobar si un objeto es una instancia o un constructor (de los constructores hablaremos con todo detalle más adelante en este libro): se trata del operador instanceof.
1. En este ejercicio describiremos el operador instanceof , el cual, como ya hemos adelantado en la introducción de este ejercicio, se utiliza para saber si un objeto es una instancia o un constructor. Por si todavía no sabe qué es un constructor diremos que son funciones con nombre que ayudan en la producción de objetos que son parecidos en algún aspecto. Los constructores serán tratados con todo detalle en un ejercicio posterior de este libro.
Ejemplo de constructor en JavaScript.
2. El uso del operador instanceof se recomienda en aquellos casos en que se desea comprobar el tipo de objeto con que se está trabajando en tiempo de ejecución.
3. El modo en que se utiliza este operador en la sintaxis de JavaS-cript necesita el nombre del objeto cuyo tipo de desea comparar y el tipo de objeto en cuestión. Lo que debe tener en cuenta es que como operando derecho, es decir, como tipo de objeto, debe declarar un objeto, no su descripción. Con ello queremos decir que, por ejemplo, en un objeto tipo String, deberá indicar la palabra ‘String’ en lugar de la cadena de texto correspondiente.
4. A continuación, mostramos unos ejemplos de script en los cuales se utiliza el operador instanceof . Con el primero de ellos podremos comprobar si un dato es un objeto del tipo Date:
hoy = new Date(2015, 02, 29)
if (hoy instanceof Date) {
document.write(‘¡Hoy es tu día!’);
}
5. hoy es el nombre del objeto que se desea comprobar y Date , el tipo de objeto. Si el resultado es true , es decir, si hoy es un objeto Date , se ejecutará la función indicada a continuación (document.write).
6. Veamos un segundo ejemplo del uso del operador instanceof. En esta ocasión, lo utilizaremos para comprobar si dos objetos del tipo String y Number son del tipo Object:
texto = new String()
cifra = new Number()
texto instanceof String == true
texto instanceof Object == true
texto instanceof Date == false
cifra instanceof Date == true
cifra instanceof Object == true
cifra instanceof String == false
7. Como puede ver, los valores que devuelve el operador instanceof en este caso son valores booleanos del tipo true y false. Otro caso en el cual se podría utilizar el operador que estamos tratando es la comprobación de que un tipo de objeto creado por nosotros es de un tipo concreto y del tipo Object.
El valor situado a la derecha del operador == es el que devolverá el operadorinstanceof al evaluar los tipos de datos indicados en cada caso.
018 Operadores de objeto
AUNQUE SERÁN TRATADOS POR SEPARADO Y con todo detalle más adelante en este libro, en este ejercicio introduciremos los denominados operadores de objeto. Como su nombre indica, se trata de una serie de operadores que trabajan únicamente con objetos, nunca con otro tipo de datos.
1. Son tres los operadores que trabajan sobre objetos:
new : este operador crea una instancia de un objeto.
delete : este operador elimina propiedades de un objeto.
in : este operador comprueba que un objeto disponga de una propiedad ya definida.
2. Veamos uno a uno en qué consisten estos operadores de objeto y cómo se utilizan. El operador new se utiliza para crear una instancia de un objeto, tanto si éste ha sido generado de forma personalizada o bien si es de uno de los tipos predefinidos: Array, Boolean, Date, Function, Number, etc.
3. El operador new va siempre seguido del nombre de una función, la cual se utiliza para inicializar el nuevo objeto creado. Los parámetros que se necesitan son, por un lado el constructor, es decir, una función que especifica el tipo de instancia del objeto y por otro, los argumentos, es decir, una lista de valores con los que el constructor será llamado:
function Prenda(tipo, tejido, color) {
this.tipo = tipo;
this.tejido = tejido;
this.color= color;
}
var prenda1 = new Prenda(“Falda”, “Lana”, “Azul”);
4. El segundo de los operadores de objeto que deseamos describir en este ejercicio es delete , con el cual es posible eliminar propiedades de un objeto, así como suprimir uno o varios elementos de una matriz (array). A continuación puede consultar un ejemplo que ilustra esta segunda opción, la de eliminar elementos de una lista:
var lugares = [‘Italia’, ‘Francia’, ‘Dinamarca’, ‘Reino Unido’, ‘Alemania’, ‘Rusia’, ‘Grecia’, ‘China’ ]; delete lugares[3];
5. Si tenemos en cuenta que el primer elemento de una matriz tiene asignado el valor 0, en este caso se suprimirá de la lista el elemento Reino Unido.
6. Por último, el operador de objeto in devuelve un valor verdadero (true) siempre y cuando la propiedad especifica en la sentencia se encuentre en el objeto indicado. Los parámetros que intervienen en el uso de este operador son prop , que es una cadena o expresión numérica que representa una propiedad o el índice de una matriz, y objectName , que contiene el nombre de un objeto. En la imagen 5 puede ver un ejemplo de código en que se emplea el operador de objeto in.
019 Conocer los tipos de datos booleanos
BÁSICAMENTE, LOS TIPOS DE DATOS BOOLEANOS son true y false. En este ejercicio vamos a tratar con todo detalle este tipo de datos, que, por otro lado, ya hemos mencionado en más de una ocasión en ejercicios anteriores.
1. En JavaScript, las variables booleanas son aquellas que pueden almacenar información dual, es decir, del tipo Sí/No, Verdadero/Falso, Cumple/No cumple, etc. A este tipo de variable siempre se le asigna como contenido true o false.
2. Debido a que true y false están consideradas como palabras clave en JavaScript, no está permitido utilizarlas como nombre para nuestras variables. Si en alguna ocasión, por despiste, nombra una variable false , por ejemplo, el navegador inter-pretará que hay un error en el código y simplemente no ejecutará la función definida.
Tenga en cuenta que si nombra a una variable como true o false , el intérprete de JavaScript no lanzará ningún mensaje de error; únicamente no se ejecutará la instrucción detallada.
3. Nunca sitúe entre comillas los valores true y false; si lo hace, el tipo de dato se convertirá en texto (“String”) y dejará de ser booleano:
var caso1 = true; typeof caso1 == “boolean”
var caso1 = false; typeof b == “boolean”
4. Las instrucciones if/else son las más adecuadas para comprobar si se cumplen ciertas condiciones y, para mostrar los resultados de estas comprobaciones se suelen utilizar datos de tipo booleanos:
var hora = new Date();
var horas = hora.getHours();
if (horas<12) {
formatoHora = ‘am’;
}
else { formatoHora = ‘pm’;
}
5. En este código se utilizará true o false para decidir si el formato de la hora debe mostrarse con ‘am’ o con ‘pm’. De ello dependerá si la hora es anterior a las 12 (true , entonces ‘am’) o después (false , entonces ‘pm’).
6. ¿Cuándo una variable devuelve true y cuándo lo hace false ? A grandes rasgos, podemos decir que devuelve true cuando recibe un valor entre comillas o bien cualquier número que no sea 0. Y devuelve false cuando se omite un valor al constructor o bien si este valor es una cadena vacía, el valor 0 o, como hemos indicado anteriormente, la palabra false sin comillas.
Бесплатный фрагмент закончился.