Operadores
==========

Este capítulo documenta todos os operadores, expressões e keywords da linguagem JavaScript .

Expressões e operadores por categoria
-------------------------------------

Para uma lista alfabética ver a barra lateral à esquerda.

### Expressões primárias

Palavras-chave e expressões básicas em JavaScript.

`this`

A palavra-chave `this` refere-se ao contexto de execução da função.

`function`

A palavra-chave `function` define uma função.

Experimental `class`

A palavra-chave `class` define uma classe.

Experimental `function*`

A palavra-chave `function*` define um gerador de função.

Experimental `yield`

Pausa e retorma uma função de gerador

Experimental `yield*`

Delegar a outra função gerador ou objeto iterável.

`[]`

Array initializer/literal syntax.

`{}`

Object initializer/literal syntax.

`/ab+c/i`

Regular expression literal syntax.

Experimental `[for (x of y) x]` (en-US)

Array comprehensions.

Experimental `(for (x of y) y)` (en-US)

Generator comprehensions.

`( )`

Grouping operator.

### Left-hand-side expressions

Left values are the destination of an assignment.

Property accessors

 Member operators provide access to a property or method of an object
 (`object.property` and `object["property"]`).


`new`

The `new` operator creates an instance of a constructor.

Experimental `super`

The `super` keyword calls the parent constructor.

Experimental `...obj` (en-US)

The spread operator allows an expression to be expanded in places where multiple arguments (for function calls) or multiple elements (for array literals) are expected.

### Incremento e decremento

Operadores sufixo/prefixo para incremento e sufixo/prefixo para decremento.

`A++` (en-US)

Operador sufixo para incremento.

`A--` (en-US)

Operador sufixo para decremento.

`++A` (en-US)

Operador prefixo para incremento.

`--A` (en-US)

Operador prefixo para decremento.

### Unary operators

A unary operation is operation with only one operand.

`delete` (en-US)

The `delete` operator deletes a property from an object.

`void`

The `void` operator discards an expression's return value.

`typeof`

The `typeof` operator determines the type of a given object.

`+` (en-US)

The unary plus operator converts its operand to Number type.

`-` (en-US)

The unary negation operator converts its operand to Number type and then negates it.

`~` (en-US)

Bitwise NOT operator.

`!` (en-US)

Logical NOT operator.

### Operadores aritméticos

Arithmetic operators take numerical values (either literals or variables) as their operands and return a single numerical value.

`+` (en-US)

Operador de soma.

`-` (en-US)

Operador de subtração.

`/` (en-US)

Operador de divisão.

`*` (en-US)

Operador de multiplicação.

`%` (en-US)

Remainder operator.

### Operadores relacionais

A comparison operator compares its operands and returns a `Boolean` value based on whether the comparison is true.

`in`

The `in` operator determines whether an object has a given property.

`instanceof`

The `instanceof` operator determines whether an object is an instance of another object.

`<` (en-US)

Operador "menor que".

`>` (en-US)

Operador "maior que".

`<=` (en-US)

Operador "menor ou igual que".

`>=` (en-US)

Operador "maior ou igual que".

### Operadores de igualdade

O resultador de um operador de igualdade é do tipo `Booleano` baseado que a comparação seja verdadeira.

`==` (en-US)

Operadores de igualdade.

`!=` (en-US)

Inequality operator.

`===` (en-US)

Identity operator.

`!==` (en-US)

Nonidentity operator.

### Bitwise shift operators

Operations to shift all bits of the operand.

`<<` (en-US)

Bitwise left shift operator.

`>>` (en-US)

Bitwise right shift operator.

`>>>` (en-US)

Bitwise unsigned right shift operator.

### Binary bitwise operators

Bitwise operators treat their operands as a set of 32 bits (zeros and ones) and return standard JavaScript numerical values.

`&` (en-US)

Bitwise AND.

`|` (en-US)

Bitwise OR.

`^` (en-US)

Bitwise XOR.

### Operadores Lógicos Binários

Operadores lógicos são normalmente usados com boolean (logical) valores, e quando eles são, eles retornam um valor Boolean.

`&&` (en-US)

AND.

`||` (en-US)

OR.

### Operador de Condicional (ternário)

`(condition ? ifTrue : ifFalse)`

O operador condicional retorna um dos dois valores baseado no valor lógico da condição.

### Assignment operators

An assignment operator assigns a value to its left operand based on the value of its right operand.

`=` (en-US)

Assignment operator.

`*=` (en-US)

Multiplication assignment.

`/=` (en-US)

Division assignment.

`%=` (en-US)

Remainder assignment.

`+=` (en-US)

Addition assignment.

`-=` (en-US)

Subtraction assignment

`<<=` (en-US)

Left shift assignment.

`>>=` (en-US)

Right shift assignment.

`>>>=` (en-US)

Unsigned right shift assignment.

`&=` (en-US)

Bitwise AND assignment.

`^=` (en-US)

Bitwise XOR assignment.

`|=` (en-US)

Bitwise OR assignment.

Experimental
 `[a, b] = [1, 2]`

Experimental
 `{a, b} = {a:1, b:2}`

Destructuring assignment allows you to assign the properties of an array or object to variables using syntax that looks similar to array or object literals.

### Comma operator

`,`

The comma operator allows multiple expressions to be evaluated in a single statement and returns the result of the last expression.

### Non-standard features

Non-standard Legacy generator function (en-US)

The `function` keyword can be used to define a legacy generator function inside an expression. To make the function a legacy generator, the function body should contains at least one `yield` expression.

Non-standard Expression closures

The expression closure syntax is a shorthand for writing simple function.

Especificações
--------------

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

Veja também
-----------

* Operator precedence