Expresiones y operadores
========================

Este capítulo documenta todos los operadores, expresiones y palabras clave del lenguaje JavaScript.

Expresiones y operadores por categoría
--------------------------------------

Para obtener una lista alfabética, consulta la barra lateral de la izquierda.

### Expresiones primarias

Palabras clave básicas y expresiones generales en JavaScript.

`this`

La palabra clave `this` se refiere a una propiedad especial de un contexto de ejecución.

`function`

La palabra clave `function` define una expresión de función.

`class`

La palabra clave `class` define una expresión de clase.

`function`

La palabra clave `function*` define una expresión de función generadora.

`yield`

Pausar y reanudar una función generadora.

`yield*`

Delegar a otra función generadora u objeto iterable.

`async function`

La `async function` define una expresión de función asíncrona.

`await`

Pausa y reanuda una función asíncrona y espera la resolución/rechazo de la promesa.

`[]`

Iniciador de arreglo/sintaxis literal.

`{}` (en-US)

Iniciador de objeto/sintaxis literal.

`/ab+c/i`

Sintaxis de expresión regular literal.

`( )`

Operador de agrupación.

### Expresiones del lado izquierdo

Los valores de la izquierda son el destino de una asignación.

Propiedad accessors

 Los operadores miembro proporcionan acceso a una propiedad o método de un objeto
 (`object.property` y `object["property"]`).


`new`

El operador `new` crea una instancia auxiliado por un constructor.

`new.target`

En los constructores, `new.target` se refiere al constructor que fue invocado por `new`.

`super`

La palabra clave `super` llama al constructor padre.

`...obj`

La sintaxis de extensión permite expandir una expresión en lugares donde se esperan múltiples argumentos (para llamadas a funciones) o múltiples elementos (para arreglos literales).

### Incremento y decremento

Operadores de incremento sufijo/prefijo y decremento sufijo/prefijo.

`A++` (en-US)

Operador de incremento sufijo.

`A--`

Operador de decremento sufijo.

`++A` (en-US)

Operador de incremento prefijo.

`--A`

Operador de decremento prefijo.

### Operadores unarios

Una operación unaria es una operación con un solo operando.

`delete`

El operador `delete` elimina una propiedad de un objeto.

`void`

El operador `void` descarta el valor de retorno de una expresión.

`typeof`

El operador `typeof` determina el tipo de un objeto dado.

`+` (en-US)

El operador unario `más` convierte su operando al tipo `Number`.

`-` (en-US)

El operador unario de negación convierte su operando al tipo `Number` y luego lo niega.

`~` (en-US)

Operador `NOT` bit a bit.

`!` (en-US)

Operador `NOT` lógico.

### Operadores aritméticos

Los operadores aritméticos toman valores numéricos (ya sean literales o variables) como sus operandos y devuelven un solo valor numérico.

`+`

Operador de adición o suma.

`-`

Operador de sustracción o resta.

`/`

Operador de división.

`*` (en-US)

Operador de multiplicación.

`%`

Operador de residuo.

`**` (en-US)

Operador de exponenciación.

### Operadores relacionales

Un operador de comparación compara sus operandos y devuelve un valor `Boolean` basado en si la comparación es verdadera o no.

`in`

El operador `in` determina si un objeto tiene una determinada propiedad.

`instanceof`

El operador `instanceof` determina si un objeto es una instancia de otro objeto.

`<` (en-US)

Operador menor que.

`>` (en-US)

Operador mayor que.

`<=` (en-US)

Operador menor o igual a.

`>=` (en-US)

Operador mayor o igual a.


**Nota:** `=>` no es un operador, sino la notación para `Funciones de flecha`.

### Operadores de igualdad

El resultado de evaluar un operador de igualdad siempre es de tipo `Boolean` basado en si la comparación es verdadera.

`==`

Operador de igualdad.

`!=` (en-US)

Operador de desigualdad.

`===`

Operador de igualdad estricta.

`!==` (en-US)

Operador de desigualdad estricta.

### Operadores de desplazamiento de bits

Operaciones para cambiar todos los bits del operando.

`<<` (en-US)

Operador de desplazamiento bit a bit a la izquierda.

`>>` (en-US)

Operador de desplazamiento bit a bit a la derecha.

`>>>` (en-US)

Operador de desplazamiento bit a bit a la derecha sin signo.

### Operadores binarios bit a bit

Los operadores bit a bit tratan a sus operandos como un conjunto de 32 bits (ceros y unos) y devuelven valores numéricos estándar de JavaScript.

`&` (en-US)

`AND` bit a bit.

`|` (en-US)

`OR` bit a bit.

`^` (en-US)

`XOR` bit a bit.

### Operadores lógicos binarios

Los operadores lógicos se utilizan normalmente con valores booleanos (lógicos); cuando lo son, devuelven un valor booleano.

`&&`

`AND` lógico.

`||`

`OR` lógico.

### Operador condicional (ternario)

`(condition ? ifTrue : ifFalse)`

El operador condicional devuelve uno de dos valores según el valor lógico de la condición.

### 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.

`=`

Operador de asignación.

`*=` (en-US)

Asignación de multiplicación.

`/=` (en-US)

Asignación de división.

`%=` (en-US)

Asignación de residuo.

`+=` (en-US)

Asignación de suma.

`-=` (en-US)

Asignación de sustracción

`<<=` (en-US)

Asignación de desplazamiento a la izquierda.

`>>=` (en-US)

Asignación de desplazamiento a la derecha.

`>>>=` (en-US)

Asignación de desplazamiento a la derecha sin signo.

`&=` (en-US)

Asignación de `AND` bit a bit.

`^=` (en-US)

Asignación de `XOR` bit a bit.

`|=` (en-US)

Asignación de `OR` bit a bit.

`&&=` (en-US)

Asignación de `AND` lógico.

`||=` (en-US)

Asignación de `OR` lógico.

`??=` (en-US)

Asignación de anulación lógica.

`[a, b] = [1, 2]`
`{a, b} = {a:1, b:2}`

La desestructuración te permite asignar las propiedades de un arreglo u objeto a variables utilizando una sintaxis que se parece a los arreglos u objetos literales.

### Operador coma

`,`

El operador `coma` permite evaluar múltiples expresiones en una sola declaración y devuelve el resultado de la última expresión.

Especificaciones
----------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-addition-operator-plus |
| ECMAScript Language Specification # sec-assignment-operators |
| ECMAScript Language Specification # sec-async-function-definitions |
| ECMAScript Language Specification # sec-async-generator-function-definitions |
| ECMAScript Language Specification # prod-BitwiseANDExpression |
| ECMAScript Language Specification # sec-bitwise-not-operator |
| ECMAScript Language Specification # prod-BitwiseORExpression |
| ECMAScript Language Specification # prod-BitwiseXORExpression |
| ECMAScript Language Specification # sec-class-definitions |
| ECMAScript Language Specification # sec-comma-operator |
| ECMAScript Language Specification # sec-conditional-operator |
| ECMAScript Language Specification # sec-postfix-decrement-operator |
| ECMAScript Language Specification # sec-delete-operator |
| ECMAScript Language Specification # sec-destructuring-assignment |
| ECMAScript Language Specification # sec-destructuring-binding-patterns |
| ECMAScript Language Specification # sec-multiplicative-operators |
| ECMAScript Language Specification # sec-equality-operators |
| ECMAScript Language Specification # sec-exp-operator |
| ECMAScript Language Specification # sec-function-definitions |
| ECMAScript Language Specification # sec-generator-function-definitions |
| ECMAScript Language Specification # sec-relational-operators |
| ECMAScript Language Specification # sec-grouping-operator |
| ECMAScript Language Specification # sec-import-calls |
| ECMAScript Language Specification # prod-ImportMeta |
| HTML Standard # hostgetimportmetaproperties |
| ECMAScript Language Specification # sec-postfix-increment-operator |
| ECMAScript Language Specification # sec-left-shift-operator |
| ECMAScript Language Specification # prod-LogicalANDExpression |
| ECMAScript Language Specification # sec-logical-not-operator |
| ECMAScript Language Specification # prod-LogicalORExpression |
| ECMAScript Language Specification # sec-new-operator |
| ECMAScript Language Specification # sec-built-in-function-objects |
| ECMAScript Language Specification # sec-null-value |
| ECMAScript Language Specification # prod-CoalesceExpression |
| ECMAScript Language Specification # sec-object-initializer |
| ECMAScript Language Specification # prod-OptionalExpression |
| ECMAScript Language Specification # sec-property-accessors |
| ECMAScript Language Specification # sec-signed-right-shift-operator |
| ECMAScript Language Specification # prod-SpreadElement |
| ECMAScript Language Specification # prod-ArgumentList |
| ECMAScript Language Specification # prod-PropertyDefinition |
| ECMAScript Language Specification # sec-subtraction-operator-minus |
| ECMAScript Language Specification # sec-super-keyword |
| ECMAScript Language Specification # sec-this-keyword |
| ECMAScript Language Specification # sec-typeof-operator |
| ECMAScript Language Specification # sec-unary-minus-operator |
| ECMAScript Language Specification # sec-unary-plus-operator |
| ECMAScript Language Specification # sec-unsigned-right-shift-operator |
| ECMAScript Language Specification # sec-void-operator |
| ECMAScript Language Specification # prod-YieldExpression |
| ECMAScript Language Specification # sec-generator-function-definitions-runtime-semantics-evaluation |

Compatibilidad con navegadores
------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Ve también
----------

* `Operator de precedencia`