domingo, 7 de octubre de 2012

Operadores y precedencia de operadores

JavaScript proporciona operadores de varios tipos:

  1. Aritméticos.
  2. A nivel de bits.
  3. Relacionales o de comparación.
  4. Operadores lógicos.
  5. De incremento/decremento.
  6. Concatenación.

Operadores aritméticos.
Los operadores aritméticos son básicamente: el operador de asignación (=), el de suma (+), el de resta o signo negativo (-), el de multipliación (*), el de división (/) y el de módulo o residuo de división (%).

Ejemplos:
var x = 5;
var y = 2;
var r;
r = x + y; //El resultado es 7


Operadores a nivel de bits.
Los operadores a nivel de bits son: el Y (&), el O (|), el NO (^), el O exclusivo (~), el desplazamiento a la izquierda (<<) y el desplazamiento a la derecha (>>). Dada la naturaleza de alto nivel de JavaScript, difícilmente los utilizará, salvo que quiera hacer uso de algunas características avanzadas proporcionadas por los navegadores modernos.

Operadores relacionales o de comparación.
Para comparar valores de variables y objetos el lenguaje JavaScript proporciona una serie de operadores relacionales como: el igual a (==), estrictamente igual a (===), el distinto o diferente a (!=), el estrictamente distinto o diferente a (!==), el menor a (<), el menor o igual a (<=), el mayor (>), el mayor o igual a (>=). Al utilizar operadores relacionales en una expresión se producirá la evaluación de la misma como un valor lógico que puede ser verdadero (true) si se cumple una condición o falso (false) si la condición no se cumple.

Ejemplos:
var x = 14;
var y = 21;
if(x > y){ // El resultado se evaluará como verdadero o falso dependiendo de los valores de x y y
   document.write(x + " es mayor que " + y);
}
else{
   document.write(y + " es mayor que " + x);
}


Operadores lógicos.
Los operadores lógicos son exactamente tres: el Y lógico (&&), el O lógico (||) y el NO lógico (!). Estos tres operadores se pueden utilizar en conjunto con los operadores relacionales para crear expresiones más complejas.

Ejemplos:
var x = 7;
var y = 4;
var r;
if((x < y) && (y % 2 == 0)){
   r = x*y;
   alert("El resultado es: " + r);
}


Operadores de incremento/decremento.
Estos operadores se utilizan para incrementar o decrementar el valor de una variable en una unidad. La característica de este tipo de operador es que además de incrementar o decrementar el valor, asigna el resultado en una sola operación. Para incrementar se utiliza la secuencia de caracteres ++ y para decrementar se utilizar la secuencia de caracteres --.

Ejemplos:
var x = 6;
alert(x--); //Primero se asigna y luego se decrementa. Imprimirá 6 en el resultado

_________________________________________________________________________

var x = 6;
alert(++x); //Primero se incrementa, luego se asigna. Imprimirá 7 en el resultado


Operador de concatenación
El operador de concatenación permite unir cadenas. El operador puede utilizarse para unir dos cadenas explícitas, o para unir una cadena con otro tipo de dato, como número. El símbolo utilizado para la operación de concatenación es el mismo que para la suma aritmética. Esto implica que debe tener cuidado de no incurrir en alguna ambigüedad a la hora de utilizarlo.

Ejemplos:
var name = "Julio Moreno";
alert("Tu nombre es: " + name);



Precedencia de operadores
La precedencia de operadores determina el orden en que serán evaluadas las expresiones complejas que incluyan más de dos operandos y un operador, que por su misma naturaleza, resultarán obvias. Así, al evaluar 3 + 9, resultará obvio que el resultado debe ser 12. Ahora bien, si evaluamos 5 + 10/2, se preguntará si el resultado es 7.5 o 10. Esta duda obedece al hecho de que no sabe si primero se realizará la suma y luego, la división, o si, por el contrario, primero se realizará la división y luego la suma.
Para resolver este tipo de ambigüedad JavaScript utiliza la precedencia de operadores para evitar confusión, de modo que independientemente de la complejidad de una expresión, el resultado siempre sea el mismo.
La siguiente tabla muestra el orden de precedencia de los operadores de JavaScript:

Precedencia de operadores de JavaScript
Operador Operación Orden de evaluación Orden de precedencia
++ Incremento Primero Der. -> Izq.
-- Decremento Primero Der. -> Izq.
- Negación Primero Der. -> Izq.
! Not Primero Der. -> Izq.
*, /, % Multiplicación, División y Módulo (o Residuo) Segundo Izq. -> Der.
+, - Suma, Resta Tercero Izq. -> Der.
+ Concatenación Tercero Izq. -> Der.
<, <= Menor que, Menor o igual que Cuarto Izq. -> Der.
>, >= Mayor que, Mayor o igual que Cuarto Izq. -> Der.
== Igual Quinto Izq. -> Der.
!= Distinto Quinto Izq. -> Der.
=== Identidad Quinto Izq. -> Der.
!== No identidad Quinto Izq. -> Der.
&& And Sexto Izq. -> Der.
|| Or Sexto Izq. -> Der.
?: Condicional Séptimo Der. -> Izq.
= Asignación Octavo Der. -> Izq.
+=, -=, *=, /=, %= Asignación aritmética para suma, resta, etc. Octavo Der. -> Izq.

No hay comentarios:

Publicar un comentario

Con mucho agrado les presento este pequeño manual en forma de blog sobre el lenguaje JavaScript. Espero comentarios de su parte que ayuden a mejorar este trabajo. Aclaro que me he enfocado en un inicio en el JavaScript puro, sin framework. Tal vez más adelante y dedicando algún tiempo en aprenderlos, pueda adentrarme en algún manual de framework JavaScript posteriormente.