Está en la página 1de 12

3.3.

Operadores
Las variables por s solas son de poca utilidad. Hasta ahora, slo se ha visto cmo crear variables de diferentes tipos y cmo mostrar su valor mediante la funcin alert(). Para hacer programas realmente tiles, son necesarias otro tipo de herramientas. Los operadores permiten manipular el valor de las variables, realizar operaciones matemticas con sus valores y comparar diferentes variables. De esta forma, los operadores permiten a los programas realizar clculos complejos y tomar decisiones lgicas en funcin de comparaciones y otros tipos de condiciones.

3.3.1. Asignacin
El operador de asignacin es el ms utilizado y el ms sencillo. Este operador se utiliza para guardar un valor especfico en una variable. El smbolo utilizado es = (no confundir con el operador == que se ver ms adelante):
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 lgicas, etc:
var numero1 = 3; var numero2 = 4; /* Error, la asignacin siempre se realiza a una variable, por lo que en la izquierda no se puede indicar un nmero */ 5 = numero1; // Ahora, la variable numero1 vale 5 numero1 = 5; // Ahora, la variable numero1 vale 4 numero1 = numero2;

3.3.2. Incremento y decremento


Estos dos operadores solamente son vlidos para las variables numricas y se utilizan para incrementar o decrementar en una unidad el valor de una variable. Ejemplo:
var numero = 5; ++numero; alert(numero); // numero = 6

El operador de incremento 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

El anterior ejemplo es equivalente a:


var numero = 5; numero = numero - 1; alert(numero); // numero = 4

Los operadores de incremento y decremento no solamente se pueden indicar como prefijo del nombre de la variable, sino que tambin 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 detrs 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 operacin. Si el operador ++ se indica como sufijo del identificador de la variable, su valor se incrementa despus de ejecutar la sentencia en la que aparece. Por tanto, en la instruccin numero3 = numero1++ + numero2;, el valor de numero1 se incrementa despus de realizar la operacin (primero se suma y numero3 vale 7, despus se incrementa el valor de numero1 y vale 6). Sin embargo, en la instruccin numero3 = ++numero1 + numero2;, en primer lugar se incrementa el valor de numero1 y despus se realiza la suma (primero se incrementa numero1 y vale 6, despus se realiza la suma y numero3 vale 8).

3.3.3. Lgicos

Los operadores lgicos son imprescindibles para realizar aplicaciones complejas, ya que se utilizan para tomar decisiones sobre las instrucciones que debera ejecutar el programa en funcin de ciertas condiciones. El resultado de cualquier operacin que utilice operadores lgicos siempre es un valor lgico o booleano. 3.3.3.1. Negacin Uno de los operadores lgicos ms utilizados es el de la negacin. Se utiliza para obtener el valor contrario al valor de la variable:
var visible = true; alert(!visible); // Muestra "false" y no "true"

La negacin lgica se obtiene prefijando el smbolo ! al identificador de la variable. El funcionamiento de este operador se resume en la siguiente tabla: variable !variable
true false false true

Si la variable original es de tipo booleano, es muy sencillo obtener su negacin. Sin embargo, qu sucede cuando la variable es un nmero o una cadena de texto? Para obtener la negacin en este tipo de variables, se realiza en primer lugar su conversin a un valor booleano:

Si la variable contiene un nmero, se transforma en false si vale 0 y en true para cualquier otro nmero (positivo o negativo, decimal o entero). Si la variable contiene una cadena de texto, se transforma en false si la cadena es vaca ("") y en true en cualquier otro caso.
// vacio = true // vacio = false // mensajeVacio = true // mensajeVacio = false

var cantidad = 0; vacio = !cantidad; cantidad = 2; vacio = !cantidad;

var mensaje = ""; mensajeVacio = !mensaje; mensaje = "Bienvenido"; mensajeVacio = !mensaje;

3.3.3.2. AND La operacin lgica AND obtiene su resultado combinando dos valores booleanos. El operador se indica mediante el smbolo && y su resultado solamente es true si los dos operandos son true: variable1 variable2 variable1 && variable2

variable1 variable2 variable1 && variable2


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

3.3.3.3. OR La operacin lgica OR tambin combina dos valores booleanos. El operador se indica mediante el smbolo || y su resultado es true si alguno de los dos operandos es true: variable1 variable2 variable1 || variable2
true true true true false true false true true false false false var valor1 = true; var valor2 = false; resultado = valor1 || valor2; // resultado = true valor1 = false; valor2 = false; resultado = valor1 || valor2; // resultado = false

3.3.4. Matemticos
JavaScript permite realizar manipulaciones matemticas sobre el valor de las variables numricas. Los operadores definidos son: suma (+), resta (-), multiplicacin (*) y divisin (/). Ejemplo:
var numero1 = 10; var numero2 = 5; resultado resultado resultado resultado = = = = numero1 / numero2; 3 + numero1; numero2 4; numero1 * numero 2; // // // // resultado resultado resultado resultado = = = = 2 13 1 50

Adems de los cuatro operadores bsicos, JavaScript define otro operador matemtico que no es sencillo de entender cuando se estudia por primera vez, pero que es muy til en algunas ocasiones. Se trata del operador "mdulo", que calcula el resto de la divisin entera de dos nmeros. Si se divide por ejemplo 10 y 5, la divisin es exacta y da un resultado de 2. El resto de esa divisin es 0, por lo que mdulo de 10 y 5 es igual a 0.

Sin embargo, si se divide 9 y 5, la divisin no es exacta, el resultado es 1 y el resto 4, por lo que mdulo de 9 y 5 es igual a 4. El operador mdulo en JavaScript se indica mediante el smbolo %, que no debe confundirse con el clculo del porcentaje:
var numero1 = 10; var numero2 = 5; resultado = numero1 % numero2; // resultado = 0 numero1 = 9; numero2 = 5; resultado = numero1 % numero2; // resultado = 4

Los operadores matemticos tambin se pueden combinar con el operador de asignacin para abreviar su notacin:
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

3.3.5. Relacionales
Los operadores relacionales definidos por JavaScript son idnticos a los que definen las matemticas: 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 aplicacin compleja, como se ver en el siguiente captulo de programacin avanzada. El resultado de todos estos operadores siempre es un valor booleano:
var numero1 var numero2 resultado = resultado = numero1 = numero2 = resultado resultado resultado resultado = 3; = 5; numero1 > numero2; // resultado = false numero1 < numero2; // resultado = true

5; 5; = numero1 = numero1 = numero1 = numero1

>= <= == !=

numero2; numero2; numero2; numero2;

// // // //

resultado resultado resultado resultado

= = = =

true true true false

Se debe tener especial cuidado con el operador de igualdad (==), ya que es el origen de la mayora de errores de programacin, 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 tambin 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 maysculas se consideran menores que las minsculas 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.) Ejercicio 4 A partir del siguiente array que se proporciona: var valores = [true, 5, false,
"hola", "adios", 2];

1. Determinar cual de los dos elementos de texto es mayor 2. Utilizando exclusivamente los dos valores booleanos del array, determinar los operadores necesarios para obtener un resultado true y otro resultado false 3. Determinar el resultado de las cinco operaciones matemticas realizadas con los dos elementos numricos

Repuesta

11.4. Ejercicio 4
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-88591" /> <title>Ejercicio 4 - Operadores</title> <script type="text/javascript"> var valores = [true, 5, false, "hola", "adios", 2]; // Cual de los 2 elementos de texto es mayor // Si el resultado es true, el primer texto es mayor var resultado = valores[3] > valores[4]; alert(resultado);

// Combinar valores booleanos var valor1 = valores[0]; var valor2 = valores[2]; // Obtener un resultado TRUE var resultado = valor1 || valor2; alert(resultado); // Obtener un resultado FALSE resultado = valor1 && valor2; alert(resultado); // Operaciones matemticas var num1 = valores[1]; var num2 = valores[5]; var suma = num1 + num2; alert(suma); var resta = num1 - num2; alert(resta); var multiplicacion = num1 * num2; alert(multiplicacion); var division = num1 / num2; alert(division); var modulo = num1 % num2; alert(modulo); </script> </head> <body> <p>Esta pgina muestra el uso bsico de los operadores</p> </body> </html>

http://librosweb.es/javascript/capitulo_3/operadores.html

Operadores

Los operadores se dividen en: 1. 2. 3. 4. 5. 6. operadores de asignacin; operadores aritmticos; operadores relacionales; operadores lgicos; operadores sobre bit, que suelen utilizarse slo para generar colores; operadores cadenas.

pueden ser unitarios o binarios: los primeros precisan un nico operando, los segundos, dos. El primer operador que hay que conocer es eloperador de asignacin cuyo signo es el igual (=). Su uso en Javascript es similar al que tiene en C y distinto del que posee en matemticas porque sirve para asignar un valor y no a establecer relaciones de igualdad. Para esto ltimo existe otro operador (= =). Con el uso del operador de asignacin se crea como una fotocopia del valor de la expresin que queda a la derecha del operador en el lado de la izquierda del operador. Los operadores aritmticos son binarios o unitarios. Los operadores unitarios modifican el valor al que se aplican y son:

Operador Incremento Disminucin Menos unitario

Smbolo Accin ++ Incrementa una unidad -Disminucin Vuelve negativo un nmero

Los operadores unitarios matemticos pueden colocarse antes (prefijos) o despus (sufijos) del operando y su valor vara segn esta posicin, ya que el operador prefijo modifica el operando antes de utilizar su valor, mientras eloperador sufjo modifica el operando despus de haber utilizado el valor. Un ejemplo puede facilitar la comprensin:

x=10; y=x++; por lo que y=10 y x=11

x=10; y=++x; por lo que y=11 y x=11

Los operadores binarios matemticos no cambian el valor de los operandos, sino que memorizan el resultado en un tercer operando. Incluyen las principales operaciones aritmticas:

Operador Suma

Smbolo Accin + Suma dos operandos

Resta Multiplicacin Divisin Resto (mdulo)

* / %

Reste el segundo operando del primero Multiplica los dos operandos Divide el primer operando por el segundo Facilita el resto de la divisin entre dos operandos

no es posible, sin embargo, utilizar el operador de clculo del mdulo cuando los operandos tienen coma mvil. El operador de divisin aplicado a variables de tipo entero produce un resultado truncado en la parte decimal. Si se divide el mdulo entre cero, se tendr una excepcin en la ejecucin: si la operacin excede del lmite inferior (underflow), el resultado ser cero; si excede del lmite superior (overflow), se obtendr una aproximacin. El operador de asignacin puede tambin ser compactado, es decir, puede combinarse con un operador aritmtico. IEn general, cuando las expresiones son del tipo: variable=variable operador expresin pueden cambiarse en: variable operador = expresin es decir, se tiene la siguiente tabla:

Escritura compacta x += y x -= y x *= y x /= y x %= y

Escritura equivalente x=x+y x=x-y x=x*y x=x/y x=x%y

Con operador relacional entendemos la relacin que tiene un valor respecto a otro. Se basan en el concepto de verdadero o falso y en todos los casos operan con slo dos estados diversos (0/1, encendido/apagado, verdadero/falso). Los operadores relacionales son:

Operador > >= < <= == !=

Accin Mayor que Mayor o igual Menor que Menor o igual Igual Distinto

Los operadores relacionales, como ya hemos dicho, producen un resultado 1

si la relacin es verdadera, y 0 si la relacin es falsa. Es importante comprender que el output est constituido slo por dos valores a fin de evitar confusiones entre el operador de asignacin y el de igualdad . Los operadores lgicos son muy parecidos a los relacionales, en el sentido de que dan tambin como output slo dos valores que, en este caso, son: 0 si la expresin lgica es verdadera, 1 si es falsa. Los operadores lgicos son (el NOT es un operador unitario):

Operador Smbolo AND & OR | AND && OR || XOR ^ NOT !

Significado AND lgico OR lgico AND valoracin OR valoracin OR exclusivo Negacin

La negacin (!) equivale al complemento a uno (~). Los operadores &, | valoran ambos lados del argomento y deciden el resultado. Los operadores && y || pueden emplearse para evitar la valoracin de los operandos de la derecha si la valoracin es necesaria. Las tablas de verdad correspondientes son:

X 0 0 1 1

Y X&&Y 0 0 1 0 0 1 1 0

X| |Y 0 1 1 0

X^Y 0 1 0 1

!X 1 1 0 0

Estos operadores son muy tiles para agrupar diversas expresiones que, en otro caso, se utilizaran con if nidificados. Existen tambin operadores de asignacin combinados con operadores lgicos (&=, |=, ^=). Las operaciones bit a bit se ocupan de controlar e impostar los bit. Hay que recordar que el resultado de estas operaciones no siempre es 0 1, como para los operadores lgicos. Los operadores sono:

Operador & | ^ ~ >> <<

Accin AND OR XOR Complemento a uno Shift a la derecha Shift a la izquierda

>>>

Shift a la derecha rellenando los ceros

Las tablas de verdad son las mismas que las de los operadores lgicos. El operador AND bit a bit se puede concebir como un modo para cancelar un bit llevndolo a 0. El operador OR bit a bit es el contrario de AND y puede utilizarse para impostar en 1 un bit, mientras que el operador XOR puede utilizarse para impostar en 1 un bit si los bit comparados son distintos . Los operadores de shift corren todos los bit de una variable hacia la derecha o hacia la izquierda un nmero determinado de posiciones y los nuevos bit que se crean se impostan en 1, mientras que los bit que salen se pierden (excepto los del signo). Las operaciones de shift son tiles para descifrar el input de un dispositivo externo, como un conversor analgico/digital, y permiten realizar operaciones rapidsimas entre enteros en cuanto el hecho de correrse a la derecha divide un nmero por dos, mientras que correrse a la izquierda lo multiplica tambin por dos. El operador de complemento a uno, por su parte, invierte el estado de los bit, por lo que todos los 1 se cambiarn en 0, y viceversa. Naturalmente, dos operaciones de complemento en el mismo nmero producen como resultado el nmero original. Los operadores sobre cadenas son:

Operador + += == !=

Nombre Suma Adjunta Igualdad Desigualdad

Sintaxis cadena=cadenaA+cadenaB cadena=cadenaA+="gorda" if (cadenaA==cadenaB) if (cadenaA!=cadenaB)

Precedencia de los operadores

La precedencia de los operadores es, en sntesis, la que sigue:

Aritmticos Relacionales Alta

Lgicos

Bit a bit

Otros ()(funcin) [] (vector) .

++ -*/% + < <= > >=

<< >>

!= == & ^ | && || ?: <<= >>= = += -= *= ^= |= &= /= %= ,

Baja

En el caso en que los operadores tengan la misma precedencia, se ejecutan en un orden que va de izquierda a derecha, aunque es posible cambiarlo mediante el uso de parntesis, de manera que se calcularn antes las expresiones en los parntesis ms internos. En todo caso, para mayor claridad, es til usar los parntesis aun cuando la precedencia los haga innecesarios.

http://www.htmlpoint.com/javascript/corso/js_30.htm

También podría gustarte