JavaScript – Operadores y expresiones
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.
uniwebsidad
Que encontrarás aquí?
Aquí encontraras mis apuntes sobre operadores y expresiones en JavaScript, y además, links hacia documentación oficial.
Operadores
Los operadores son símbolos que indican cómo se deben manipular los operandos. Los operadores junto con los operandos forman una expresión, que es una fórmula que define el cálculo de un valor. Los operandos pueden ser constantes, variables o llamadas a funciones, siempre que éstas devuelvan algún valor.
Operadores de asignación
Un operador de asignación asigna un valor a su operando izquierdo basándose en el valor de su operando derecho.
En JavaScript el operador de asignación simple es el símbolo “=” asignando el valor del operando derecho al izquierdo.
let x = 0;
x = "1";
console.log(x) // 1;
Existen además los operadores de asignación compuestos, siendo estos una forma de abreviar operaciones simples como:
NOMBRE OPERADOR SIGNIFICADO
Asignación x = y x = y
Asignación de adición x += y x = x + y
Asignación de resta x -= y x = x - y
Asignación de multiplicación x *= y x = x * y
Asignación de división x /= y x = x / y
Asignación de residuo x %= y x = x % y
Asignación de exponenciación x **= y x = x ** y
Asignación de desplazamiento a la izquierda x <<= y x = x << y
Asignación de desplazamiento a la derecha x >>= y x = x >> y
A. de desplazamiento a la derecha sin signo x >>>= y x = x >>> y
Asignación AND bit a bit x &= y x = x & y
Asignación XOR bit a bit x ^= y x = x ^ y
Asignación OR bit a bit x |= y x = x | y
Asignación AND lógico x &&= y x && (x = y)
Asignación OR lógico x ||= y x || (x = y)
Asignación de anulación lógica x ??= y x ?? (x = y)
Operadores de comparación
Un operador de comparación compara sus operandos y devuelve un valor lógico en función de si la comparación es verdadera (true) o falsa (false). Los operandos pueden ser valores numéricos, de cadena, lógicos u objetos.
En caso de que los dos operandos no son del mismo tipo JavaScript intenta convertirlos a un tipo apropiado para la comparación.
OPERADOR DESCRIPCION
Igual (==) Devuelve true si los operandos son iguales.
No es igual (!=) Devuelve true si los operandos no son iguales.
Estrictamente igual (===) Devuelve true si los operandos son iguales y del mismo tipo y consulta también Object.is y similitud en JS.
Desigualdad estricta (!==) Devuelve true si los operandos son del mismo tipo pero no iguales, o son de diferente tipo.
Mayor que (>) Devuelve true si el operando izquierdo es mayor que el operando derecho.
Mayor o igual que (>=) Devuelve true si el operando izquierdo es mayor o igual que el operando derecho.
Menor que (<) Devuelve true si el operando izquierdo es menor que el operando derecho.
Menor o igual (<=) Devuelve true si el operando izquierdo es menor o igual que el operando derecho.
Operadores aritméticos
Un operador aritmético toma valores numéricos (ya sean literales o variables) como sus operandos y devuelve un solo valor numérico.
OPERADOR DESCRIPCION
Residuo (%) Devuelve el resto entero de dividir los dos operandos.
Incremento (++) Agrega uno a su operando.
Si se usa como operador prefijo (++x), devuelve el valor de su operando después de agregar uno.
Si se usa como operador sufijo (x++), devuelve el valor de su operando antes de agregar uno.
Decremento (--) Resta uno de su operando.
Negación unaria (-) Devuelve la negación de su operando.
Positivo unario (+) Intenta convertir el operando en un número
Operador de exponenciación (**) Calcula la base a la potencia de exponente.
Operadores bit a bit
Un operador bit a bit trata a sus operandos como un conjunto de 32 bits (ceros y unos), en lugar de números decimales, hexadecimales u octales. Por ejemplo, el número decimal nueve tiene una representación binaria de 1001. Los operadores bit a bit realizan sus operaciones en tales representaciones binarias, pero devuelven valores numéricos estándar de JavaScript.
Operadores lógicos
Los operadores lógicos se utilizan normalmente con valores booleanos (lógicos); cuando lo son, devuelven un valor booleano. Sin embargo, los operadores (&&) y (||) en realidad devuelven el valor de uno de los operandos especificados, por lo que si estos operadores se utilizan con valores no booleanos, pueden devolver un valor no booleano.
- AND Logico &&
- OR Logico ||
- NOT Logico !
var a1 = true && true; // t && t devuelve true
var a2 = true && false; // t && f devuelve false
var a3 = false && true; // f && t devuelve false
var a4 = false && (3 == 4); // f && f devuelve false
var a5 = 'Cat' && 'Dog'; // t && t devuelve Dog
var a6 = false && 'Cat'; // f && t devuelve false
var a7 = 'Cat' && false; // t && f devuelve false
var o1 = true || true; // t || t devuelve true
var o2 = false || true; // f || t devuelve true
var o3 = true || false; // t || f devuelve true
var o4 = false || (3 == 4); // f || f devuelve false
var o5 = 'Cat' || 'Dog'; // t || t devuelve Cat
var o6 = false || 'Cat'; // f || t devuelve Cat
var o7 = 'Cat' || false; // t || f devuelve Cat
var n1 = !true; // !t devuelve false
var n2 = !false; // !f devuelve true
var n3 = !'Cat'; // !t devuelve false
Mas información aquí!
Operadores de cadena
el operador de concatenación (+) concatena dos valores de cadena, devolviendo otra cadena que es la unión de los dos operandos de cadena.
El operador de asignación abreviada += también se puede utilizar para concatenar cadenas.
console.log('mi ' + 'cadena'); // "mi cadena".
var mystring = 'alpha';
mystring += 'bet'; // "alphabet"
Operador condicional (ternario)
El operador condicional es el único operador de JavaScript que toma tres operandos. El operador puede tener uno de dos valores según una condición. En si actúa como si fuera un if.
let age = 19;
var status = (age >= 18) ? 'adult' : 'minor';
// pregunta true false
console.log(status) // adult
Operador coma
evalúa ambos operandos y devuelve el valor del último operando. Este operador se utiliza principalmente dentro de un bucle for, para permitir que se actualicen múltiples variables cada vez a través del bucle. Se considera de mal estilo usarlo en otros lugares, cuando no es necesario.
var a = [x, x, x, x, x];
for (var i = 0, j = 9; i <= j; i++, j--)
// ^ operador coma
console.log('a[' + i + '][' + j + ']= ' + a[i][j]);
Operadores unarios
Una operación unaria es una operación con un solo operando.
Delete
Elimina la propiedad del objeto. Intentar acceder a él después dará como resultado undefined. El operador delete devuelve true si la operación es posible; devuelve false si la operación no es posible.
delete object.property;
delete object[propertyKey];
delete objectName[index];
delete property; // legal solo dentro de una declaración with
x = 42; // implícitamente crea window.x
var y = 43;
var myobj = {h: 4}; // crea un objeto con la propiedad h
delete x; // devuelve true (se puede eliminar si se crea implícitamente)
delete y; // devuelve false (no se puede borrar si se declara con var)
delete Math.PI; // devuelve false (no se pueden eliminar propiedades no configurables)
delete myobj.h; // devuelve true (puede eliminar propiedades definidas por el usuario)
Dado que los arreglos solo son objetos, técnicamente es posible delete elementos de ellos. Sin embargo, esto se considera una mala práctica, trata de evitarlo.
Typeof
El operador typeof devuelve una cadena que indica el tipo de un string, palabra clave o objeto para que que se devolvera el tipo.
var myFun = new Function('5 + 2');
var shape = 'round';
var size = 1;
var foo = ['Apple', 'Mango', 'Orange'];
var today = new Date();
typeof myFun; // devuelve "function"
typeof shape; // devuelve "string"
typeof size; // devuelve "number"
typeof foo; // devuelve "object"
typeof today; // devuelve "object"
typeof doesntExist; // devuelve "undefined"
//Para las palabras clave true y null, el operador typeof devuelve los siguientes resultados:
typeof true; // devuelve "boolean"
typeof null; // devuelve "object"
//Para métodos y funciones, el operador typeof devuelve los siguientes resultados:
typeof blur; // devuelve "function"
typeof eval; // devuelve "function"
typeof parseInt; // devuelve "function"
typeof shape.split; // devuelve "function"
//Para objetos predefinidos, el operador typeof devuelve los siguientes resultados:
typeof Date; // devuelve "function"
typeof Function; // devuelve "function"
typeof Math; // devuelve "object"
typeof Option; // devuelve "function"
typeof String; // devuelve "function"
Void
El operador void especifica una expresión que se evaluará sin devolver un valor.
const output = void 1;
console.log(output);
// expected output: undefined
void console.log('expression evaluated');
// expected output: "expression evaluated"
void function iife() {
console.log('iife is executed');
}();
// expected output: iife is executed
void function test() {
console.log('test function executed');
};
try {
test();
} catch (e) {
console.log('test function is not defined');
// expected output: "test function is not defined"
}
Operadores relacionales
Un operador relacional compara sus operandos y devuelve un valor Boolean basado en si la comparación es verdadera.
In
El operador in devuelve true si la propiedad especificada está en el objeto especificado.
// Arreglos
var trees = ['redwood', 'bay', 'cedar', 'oak', 'maple'];
0 in trees; // devuelve true
3 in trees; // devuelve true
6 in trees; // devuelve false
'bay' in trees; // devuelve false (debes especificar el número del índice,
// no el valor en ese índice)
'length' en trees; // devuelve true (es una propiedad de Array)
// objetos integrados
'PI' in Math; // devuelve true
var myString = new String('coral');
'length' in myString; // devuelve true
// Objetos personalizados
var mycar = { make: 'Honda', model: 'Accord', year: 1998 };
'make' in mycar; // devuelve true
'model' in mycar; // devuelve true
Instanceof
El operador instanceof devuelve true si el objeto especificado es del tipo de objeto especificado.
Confirma el tipo de un objeto en tiempo de ejecución. Por ejemplo, al detectar excepciones, puedes ramificar a diferentes controladores según el tipo de excepción lanzada.
/* El siguiente código usa instanceof para determinar si theDay es un objeto Date.
// Debido a que theDay es un objeto Date, las instrucciones de la expresión if se
*/ ejecutan.
var theDay = new Date(1995, 12, 17);
if (theDay instanceof Date) {
console.log("hola mundo");
}
Expresiones
Una expresión es cualquier unidad de código válida que se resuelve en un valor.
Toda expresión sintácticamente válida se resuelve en algún valor, pero conceptualmente, hay dos tipos de expresiones:
- Con efectos secundarios:
// Esta expresión usa el operador = para asignar el valor siete a la variable x.
// La expresión en sí se evalúa como siete.
X = 7
- Las que evaluan y se resuelven en un valor:
// Esta expresión usa el operador + para sumar tres y cuatro sin asignar el
// resultado, siete, a una variable.
3 + 4
Expresiones primarias
This
Hace referencia al objeto actual. En general, this se refiere al objeto que llama en un método.
this['propertyName']
this.propertyName
Operador de agrupación
El operador de agrupación () controla la precedencia de la evaluación en las expresiones. Por ejemplo, puedes redefinir la multiplicación y la división primero, luego la suma y la resta para evaluar la suma primero.
var a = 1;
var b = 2;
var c = 3;
// precedencia predeterminada
a + b * c === a + (b * c) // 7
// ahora prevalece sobre la precedencia
// suma antes de multiplicar
(a + b) * c // 9
// que es equivalente a
a * c + b * c // 9
Expresiones del lado izquierdo
Los valores de la izquierda son el destino de una asignación.
New
Puedes utilizar el operador new para crear una instancia de un tipo de objeto definido por el usuario o de uno de los tipos de objeto integrados.
var objectName = new objectType([param1, param2, ..., paramN]);
Super
La palabra clave super se utiliza para llamar a funciones en el padre de un objeto. Es útil con clases llamar al constructor padre.
super([arguments]); // llama al constructor padre.
super.functionOnParent([arguments]);
Puede interesarte:

JavaScript
JavaScript es el lenguaje de programación que debes usar para añadir características interactivas a tu sitio web.

HTML
HTML (Lenguaje de Marcas de Hipertexto, del inglés HyperText Markup Language) es el componente más básico de la Web. Define el significado y la estructura del contenido web.

CSS
CSS es el lenguaje de estilos utilizado para describir la presentación de documentos HTML.