Resta (-). Halla la diferencia entre dos números. Ejemplo A: 3-2 = 1 . Ejemplo B: (-1)-(-2) = 1 .
Negativo (-). Indica el signo negativo de un número o una expresión: -3.
División (/). Divide dos números, obteniendo un cociente de coma flotante: 5 / 2 = 2.5 . Fíjate en que el separador decimal es el punto.
Módulo aritmético %. Divide dos números, obteniendo un resto entero: 5 % 2 = 1 .
Multiplicación (*). Multiplica dos números: 3 * 2 = 6 .
Incrementos y decrementos (++ --). Incrementa o decrementa el valor de una variable numérica en una unidad. No puede aplicarse a un literal. Pueden darse dos casos:
var A, B; B = 2; A = ++B A = B++En el primer caso, A = 3 Es decir, que el incremento de B ha sido el correcto, pero no así el segundo, en el que A = 2. Esto se debe a que, en el primer caso, el incremento se efectúa antes de que la expresión sea evaluada, y en el segundo, se incrementa después de la evaluación según indica el orden de precedencia de los operadores (ver tabla al final de esta página). De igual forma, para decrementos:
var A, B; B = 2; A = --B A = B--En el primer caso resulta: A = 1 y en el segundo: A = 2
Por ejemplo, supongamos que hay que establecer el estado lógico de un material: El hierro. Evidentemente, para establecer un estado lógico primero tenemos que decidir respecto a qué se establece ese estado, ya que no podemos decir simplemente que el hierro es verdadero o falso. Nos tendremos que referir a alguna cualidad del material y compararla con algo para establecer si el estado es verdadero o falso.
Sea la expresión El hierro es un metal . Si tenemos que establecer el estado lógico de esta expresión, la respuesta inmediata es Verdadero (True) y si la expresión fuese El hierro no es un metal , inmediatamente pensarímos que el estado adecuado es Falso (False)
Una vez establecido el estado lógico de la expresión, los operadores lógicos nos permitirán tomar decisiones mediante la verificación de ese estado, bien tomando uno solo, o agrupando varios de ellos. Al igual que los operadores aritméticos, los operadores lógicos tienen un orden preestablecido de evaluación que debe ser tenido en cuenta. Los estados lógicos, o mejor dicho, el resultado que dan los operadores lógicos, pueden tratarse también como números booleanos, siendo True equivalente a 1 y False equivalente a 0.
Negación lógica ! (Not). Establece una negación lógica en una expresión, es decir, que ante una expresión, cuyo estado lógico es True (verdadero), el operador hará que devuelva False (falso).
El hierro es un metal = True.
! El hierro es un metal = False.
Hay tres posibles resultados aplicando este operador a una expresión:
Si la expresión = True el operador devuelve False.
Si la expresión = False el operador devuelve True.
Si la expresión = Null el operador devuelve Null.
Conjunción lógica && (And). Establece una conjunción lógica de dos expresiones, es decir, que han de resultar True (verdadero) las dos expresiones para que el resultado final también lo sea.
El hierro es un metal = True.
El hierro es duro = True.
El hierro es un metal && El hierro es duro = True.
Hay 9 posibles resultados aplicando este operador a dos expresiones, aunque es posible incluir cuantas sean necesarias:
Si la Expresión 1 = True && Expresión 2 = True el resultado es True.
Si la Expresión 1 = True && Expresión 2 = False el resultado es False.
Si la Expresión 1 = True && Expresión 2 = Null el resultado es Null.
Si la Expresión 1 = False && Expresión 2 = True el resultado es False.
Si la Expresión 1 = False && Expresión 2 = False el resultado es False.
Si la Expresión 1 = False && Expresión 2 = Null el resultado es False.
Si la Expresión 1 = Null && Expresión 2 = True el resultado es Null.
Si la Expresión 1 = Null && Expresión 2 = False el resultado es False.
Si la Expresión 1 = Null && Expresión 2 = Null el resultado es Null.
Como puedes ver, si, y sólo si, ambas expresiones se evalúan como True, el resultado es True. Si cualquiera de las expresiones es False, el resultado es False.
Disyunción lógica || (Or). Establece una disyunción lógica de dos expresiones, es decir, que el resultado se dará evaluando una expresión u otra.
El hierro es un metal = True.
El hierro es duro = True.
El hierro es un metal || El hierro es duro = True.
Hay 9 posibles resultados aplicando este operador a dos expresiones, aunque es posible incluir cuantas sean necesarias:
Si la Expresión 1 = True || Expresión 2 = True el resultado es True.
Si la Expresión 1 = True || Expresión 2 = False el resultado es True.
Si la Expresión 1 = True || Expresión 2 = Null el resultado es True.
Si la Expresión 1 = False || Expresión 2 = True el resultado es True.
Si la Expresión 1 = False || Expresión 2 = False el resultado es False.
Si la Expresión 1 = False || Expresión 2 = Null el resultado es Null.
Si la Expresión 1 = Null || Expresión 2 = True el resultado es True.
Si la Expresión 1 = Null || Expresión 2 = False el resultado es Null.
Si la Expresión 1 = Null || Expresión 2 = Null el resultado es Null.
Como puedes ver, si cualquiera de las expresiones, o ambas, son True, el resultado es True.
Exclusión lógica ^ (Xor). Establece una exclusión lógica de dos expresiones, es decir, que el resultado se dará evaluando una expresión u otra, y dará True si solamente una de ellas es True, lo que implica la exclusión de la otra.
El hierro es un metal = True.
El hierro es duro = True.
El hierro es un metal ^ El hierro es duro = False.
Hay 4 posibles resultados aplicando este operador a dos expresiones:
Si la Expresión 1 = True ^ Expresión 2 = True el resultado es False.
Si la Expresión 1 = True ^ Expresión 2 = False el resultado es True.
Si la Expresión 1 = False ^ Expresión 2 = True el resultado es True.
Si la Expresión 1 = False ^ Expresión 2 = False el resultado es False.
Como puedes ver, si una y sólo una de las expresiones es True, el resultado es True. Si cualquiera de las expresiones es Null, el resultado también será Null.
Igualdad estricta (===) Hace lo mismo que el anterior, pero verificando también que coincidan los tipos de datos.
Por ejemplo: 2 === "2" devuelve False
Desigualdad (!=) Funciona de la misma forma que la igualdad, pero negándola.
Por ejemplo: 2 != "2" devuelve False
Desigualdad estricta (!==) Lo mismo que la igualdad estricta, pero negándola.
Por ejemplo: 2 !== "2" devuelve True
Y estos cuatro, seguro que ya sabes cómo funcionan:
Mayor que (>)
Mayor o igual que (>=)
Menor que (<)
Menor o igual que (<=)
Para comprender como trabajan estos complicados operadores lo mejor son los ejemplos:
Bitwise shift operators
9 << 2 = 36 con valor negativo: -9 << 2 = -36
9 >> 2 = 2 con valor negativo: -9 >> 2 = -3
9 >>> 2 = 2 con valor negativo: -9 >>> 2 = 1073741821
Bitwise logical operators
Al igual que los anteriores, estos operadores trabajan convirtiendo previamente a binario los operandos, en la base de enteros de 32 bits. Para operar emparejan cada bit del primer operando con su correspondiente del segundo operando, aplicando el operador uno a uno hasta obtener el resultado final. Por ejemplo, el número 15 en binario es 1111 y el 9 1001. Si aplicamos los tres operadores lógicos a esta pareja de valores, se obtiene:
15 & 9 = 9 (1111 AND 1001 = 1001)
15 | 9 = 15 (1111 OR 1001 = 1111)
15 ^ 9 = 6 (1111 XOR 1001 = 0110)
Y seguramente te estarás diciendo que no entiendes nada... Analicemos uno.
Sea, por ejemplo, el último de ellos: 15 ^ 9 = 6. Más arriba se ha descrito este mismo operador, que es Xor. Recordemos que establece una exclusión lógica de dos expresiones, es decir, que el resultado se dará evaluando ambos valores, y dará True si solamente una de ellas es True. Recordemos también que en binario 1 = True y 0 = False. Por tanto
15 = 1 1 1 1 9 = 1 0 0 1 ------------------------------ False True True False o lo que es igual, 0110
No hay que confundir estos tres operadores con sus homólogos lógicos vistos más arriba, que se representan con el mismo símbolo pero doble (excepto este).
En JavaScript el operador de asignación tiene la particularidad de que puede combinarse con algunos de los operadores aritméticos, dando lugar a toda una familia de nuevos operadores:
A += B Ejemplo equivalente: A = A + B
A -= B Ejemplo equivalente: A = A - B
A /= B Ejemplo equivalente: A = A / B
A *= B Ejemplo equivalente: A = A * B
A %= B Ejemplo equivalente: A = A % B
A &= B Ejemplo equivalente: A = A & B
A ^= B Ejemplo equivalente: A = A ^ B
A |= B Ejemplo equivalente: A = A | B
typeof 2 devuelve number
void Este es un curioso operador que se limita a impedir que todo funcione normalmente, es decir, que una vez evaluadas la instrucciones, sus efectos o presentación de resultados serán anulados. En principio podemos dudar de su utilidad, pero puede resultar muy útil en las ocasiones en que, dependiendo de una evaluación previa, haya que deshabilitar algun objeto o impedir alguna acción. Por ejemplo, bloqueando un formulario donde no se han cumplimentado algunos campos obligatorios, o si algun valor es erróneo. El siguiente ejemplo genera un link que no funciona: Este link no funciona
Y se escribe: <A HREF="javascript:void(0)">Este link no funciona</A>
new Sirve para crear una instancia de un objeto definido por el usuario, o también, para crear alguno de los objetos intrínsecos de javaScript:, como son: Array, Boolean, Date, Function, Math, Number o String. Lo veremos con más detalle en la página dedicada a los objetos.
Como puedes ver, JavaScript dispone de una gran variedad de operadores. Cuando se escriben expresiones lógicas complejas es recomendable usar los paréntesis para cada sub expresión participante, y no olvides tener siempre en cuenta el orden de evaluación de los operadores. Es relativamente fácil equivocarse al escribir expresiones complicadas, y es buena idea probar siempre lo escrito con cuantas variaciones sea posible para asegurarse de que no se producen resultados inesperados.
Operador | Descripción |
. [ ] ( ) | Acceso a campos, índice de matrices y llamada a funciones. |
++ -- - ~ ! delete new typeof void | Incremento +1, decremento -1, negativo, NOT, NOT lógico borrado, crear objeto, mostrar tipo, indefinido |
* / % | Multiplicación, división, módulo de división (resto) |
+ - + | Suma, resta, concatenación de cadenas |
<< >> >>> | Bit shifting |
< <= > >= | menor que, menor que o igual, mayor que, mayor que o igual |
== != === !== | Igualdad, desigualdad, identidad, no identidad |
& | AND |
^ | XOR |
| | OR |
&& | AND logico |
|| | OR logico |
?: | Condicional |
= | Asignación |
, | Evaluación múltiple |
Los paréntesis se utilizan para alterar el orden natural de evaluación de los operadores. Una expresión con paréntesis será evaluada completa antes de que su valor resultante sea utilizado por el resto de instrucciones.
Para hacerse una idea más calra, veamos un ejemplo. Sea la siguiente expresión:
X = 78 * (96 + 3 + 45)
Como puedes ver, hay cinco operadores en este orden: = * () + +
De acuerdo con su orden de precedencia, se evaluarán en este orden: () * + + =
Y esta sería la forma de operar paso a paso:
En primer lugar, se resuelve el paréntesis: 96 + 3 = 99 y a continuación 99 + 45 = 144
Ahora se multiplica: 78 * 144 = 11232
Por último se asigna el resultado: X = 11232