Referência JavaScript
=====================

Sobre essa Referência
---------------------

 A referência de JavaScript serve como um repositório para fatos sobre a linguagem JavaScript. A linguagem é inteiramente descrita aqui em detalhes. Quando você escreve códigos fontes em JavaScript, muitas vezes você irá precisar de referências ( por isto o titulo "Referência de JavaScript" ). Se você estiver aprendendo sobre JavaScript, ou precisa de ajuda para entender alguma das suas capacidades ou recursos, você pode conferir o Guia de JavaScript !
 O JavaScript é uma linguagem interpretada que se destina a ser utilizado dentro de algum ambiente maior, seja ele um script de um navegador, do lado do servidor, ou algo similar. Para a maior parte, esta referência se distinta à um ambiente agnóstico, e não somente ao ambiente de um navegador.

Onde encontrar mais informações sobre JavaScript ?
--------------------------------------------------

Você pode verificar a documentação do *core* da linguagem e seus novos recursos ( ECMAScript puro em sua maior parte), incluindo também :

* Guia de JavaScript
* Referência de JavaScript

Se você é novo com JavaScript, recomendamos à você começar com o guia. Uma vez que você já tenha uma base sobre os fundamentos da linguagem, você pode usar a referência para obter mais detalhes sobre objetos individuais e construtores da linguagem.

Estrutura da referência
-----------------------

Na referência do JavaScript você poderá encontrar os seguintes seções :

Padrões de objetos internos (*built-in objects*)

Esta seção documenta todos o padrão JavaScript de objetos internos, juntamente com seus métodos e propriedades.

Instruções e Declarações (*Statements*)

As aplicações em JavaScript consistem em declarações com uma sintaxe apropriada. Uma única declaração pode abranger várias linhas de código. Várias instruções podem ocorrer em uma única linha também, se cada declaração for devidamente separada por ponto e virgula. Instrução não é uma palavra-chave, mas sim, um grupo de palavras-chave.

Expressões e operadores

Esta seção documenta todos os operadores da linguagem JavaScript, expressões e palavras-chave.

Funções

Esta seção é referente as funções existentes no JavaScript.

Novo no JavaScript

Esta seção é sobre as versões do JavaScript, contendo o histórico de versões e o que há de novo nas proximas versões.

### Mais paginas de referências

* Recursos e funcionalidades obsoletas
* Gramática Léxica
* Tipos e estruturas de dados
Objetos Globais
---------------

{{page('/pt-BR/docs/JavaScript/Reference/Global\_Objects', 'Standard global objects (by category)')}}Funções e escopo de função (en-US)
----------------------------------

* `argumentos` (en-US)
* Modo Strict (en-US)
Declarações
-----------

Aplicações em JavaScript são realizadas através de instruções com uma sintaxe apropriada. Uma única instrução pode abranger multiplas linhas. Multiplas instruções podem estar contidas em uma única linha se cada instrução estiver separada por ponto e vírgula ( ; ).

Instruções e declarações por categoria
--------------------------------------

Para visualizar em ordem alfabética use a barra de rolagem à esquerda.

### Control flow

`Block`

Uma instrução de bloqueio é usada para um grupo de zero ou mais instruções. O bloqueio é delimitado por um par de chaves.

`break`

Termina o atual loop, troca, ou nomeia instruções e transfere o controle do programa para a próxima instrução após a que foi terminada agora.

`continue`

Termina a execução das instruções na atual iteração do atual loop, e continua a execução do loop com a seguinte iteração.

`Empty`

Uma instrução vazia é usada para gerar uma "não-instrução", ainda que o JavaScrpit espere uma.

`if...else`

Executa uma instrução se a condição especificada é verdadeira. Se a condição é falsa, outra instrução pode ser executada.

`switch`

Retorna uma expressão, combinando o valor da expressão a condição do caso, e executa a condição associada a este caso.

`throw`

Aplica uma exceção definida pelo usuário.

`try...catch`

Marca um bloco de instruções para tentar, e especifica a resposta, uma exceção deve ser retornada.

### Declarações

`var`

Declara uma variável, opcionalmente inicializando com um valor.

Experimental `let`

Declara acesso ao local da variável, opcionalmente inicializando com um valor.

Experimental `const`

Declara uma constante de apenas leitura.

### Funções e classes

`function`

Declara uma função com os parâmetros especificos.

Experimental `function*`

Gera funções habilitando iteradores de escrita mais facilmente.

`return`

Especifica o valor a ser retornado por uma função.

Experimental `class`

Declara uma classe.

### Iterações

`do...while`

Cria um loop que executa uma especifica instrução até que a condição de teste seja falsa. A condição é retornada depois da execução da instrução, resultando na instrução especificada executando ao menos uma vez.

`for`

Cria um loop que consiste em três opções de expressões, entre parenteses e separado por ponto e vírgula, seguido pela instrução executada no loop.

Deprecated 
Non-standard
 `for each...in`

Itera uma variável especificada sobre todos os valores das propriedades do objeto. Para cada propriedade distinta, uma instrução especificada é executada.

`for...in`

Itera através de enumeráveis propriedades de um objeto, em ordem arbitrária. Para cada propriedade distinta, instruções podem ser executadas.

Experimental `for...of`

Itera através de objetos iteráveis (incluindo arrays, array-like objects, iterators and generators (en-US)), invocando uma iteração personalizada com instruções para serem executadas pelo valor de cada propriedade.

`while`

Cria um loop que executa uma especifica instrução enquanto o teste da condição for positivo. A condição é retornada antes de executar a instrução.

### Outros

`debugger`

Invoca qualquer funcionalidade de depuração disponível. Se não há funcionabilidade disponível, a instrução não tem efeito.

Experimental `export`

Usado para exportar funções que os deixa disponível para importação em módulos externos, outros scripts.

Experimental `import`

Usado para importar funções exportadas de um módulo externo, outro script.

`label`

Fornece uma instrução com um identificador que pode ser referido usando `break` ou `continue` instruções.

Deprecated `with`

Extende o alcance de uma instrução.

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

* Operators
Operadores e outras palavras-chave
----------------------------------

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
Comentários
-----------

* Comentários de código (en-US) (`//` and `/* */`)
E4X (extensão)
Deprecated
-------------------------

Declarações Globais:

* default XML namespace

Funções Globais:

* isXMLName()

Construtores Globais:

* Namespace()
* QName()
* XML()
* XMLList()
Apêndice A - Palavras Reservadas (en-US)
----------------------------------------

Apêndice B - Funcionalidades Obsoletas (en-US)
----------------------------------------------