diff options
author | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:49:58 +0100 |
---|---|---|
committer | Florian Merz <me@fiji-flo.de> | 2021-02-11 14:49:58 +0100 |
commit | 68fc8e96a9629e73469ed457abd955e548ec670c (patch) | |
tree | 8529ab9fe63d011f23c7f22ab5a4a1c5563fcaa4 /files/pt-br/conflicting/web/javascript/reference/operators | |
parent | 8260a606c143e6b55a467edf017a56bdcd6cba7e (diff) | |
download | translated-content-68fc8e96a9629e73469ed457abd955e548ec670c.tar.gz translated-content-68fc8e96a9629e73469ed457abd955e548ec670c.tar.bz2 translated-content-68fc8e96a9629e73469ed457abd955e548ec670c.zip |
unslug pt-br: move
Diffstat (limited to 'files/pt-br/conflicting/web/javascript/reference/operators')
-rw-r--r-- | files/pt-br/conflicting/web/javascript/reference/operators/index.html | 329 | ||||
-rw-r--r-- | files/pt-br/conflicting/web/javascript/reference/operators/spread_syntax/index.html | 201 |
2 files changed, 530 insertions, 0 deletions
diff --git a/files/pt-br/conflicting/web/javascript/reference/operators/index.html b/files/pt-br/conflicting/web/javascript/reference/operators/index.html new file mode 100644 index 0000000000..4ca87eaddd --- /dev/null +++ b/files/pt-br/conflicting/web/javascript/reference/operators/index.html @@ -0,0 +1,329 @@ +--- +title: Arithmetic operators +slug: Web/JavaScript/Reference/Operators/Arithmetic_Operators +tags: + - JavaScript + - Operadores +translation_of: Web/JavaScript/Reference/Operators +translation_of_original: Web/JavaScript/Reference/Operators/Arithmetic_Operators +--- +<div>{{jsSidebar("Operadores")}}</div> + +<p><strong>Operadores aritméticos</strong> tem valores numéricos (literais ou variáveis) como seus operadores e retornam um valor numérico único. Os operadores aritméticos padrões são adição (+), subtração (-), multiplicação (*), e divisão (/).</p> + +<h2 id="Adição_()"><a name="Addition">Adição (+)</a></h2> + +<p>O operador de adição produz a soma dos operadores numéricos ou a concatenação de strings.</p> + +<h3 id="Sintaxe">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> x + y +</pre> + +<h3 id="Exemplos">Exemplos</h3> + +<pre class="brush: js">// Número + Número -> adição +1 + 2 // 3 + +// Booleano + Número -> adição +true + 1 // 2 + +// Booleano + Booleano -> adição +false + false // 0 + +// Número + String -> concatenação +5 + "foo" // "5foo" + +// String + Booleano -> concatenação +"foo" + false // "foofalse" + +// String + String -> concatenação +"foo" + "bar" // "foobar" +</pre> + +<h2 id="Subtração_(-)"><a name="Subtraction">Subtração (-)</a></h2> + +<p>O operador de subtração subtrai os dois operandos, produzindo sua diferença.</p> + +<h3 id="Sintaxe_2">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> x - y +</pre> + +<h3 id="Exemplos_2">Exemplos</h3> + +<pre class="brush: js">5 - 3 // 2 +3 - 5 // -2 +"foo" - 3 // NaN</pre> + +<h2 id="Divisão_()"><a name="Division">Divisão (/)</a></h2> + +<p>O operador de divisão produz o quociente de seus operandos onde o operando da esquerda é o dividendo e o da direita é o divisor.</p> + +<h3 id="Sintaxe_3">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> x / y +</pre> + +<h3 id="Exemplos_3">Exemplos</h3> + +<pre class="brush: js">1 / 2 // retorna 0.5 em JavaScript +1 / 2 // retorna 0 em Java +// (nenhum dos números é explicitamente um número de ponto flutuante) + +1.0 / 2.0 // retorna 0.5 em JavaScript e Java + +2.0 / 0 // retorna Infinity em JavaScript +2.0 / 0.0 // retorna Infinity também +2.0 / -0.0 // retorna -Infinity em JavaScript</pre> + +<h2 id="Multiplicação_(*)"><a name="Multiplication">Multiplicação (*)</a></h2> + +<p>O operador de multiplicação produz o produto dos operandos.</p> + +<h3 id="Sintaxe_4">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> x * y +</pre> + +<h3 id="Exemplos_4">Exemplos</h3> + +<pre class="brush: js">2 * 2 // 4 +-2 * 2 // -4 +Infinity * 0 // NaN +Infinity * Infinity // Infinity +"foo" * 2 // NaN +</pre> + +<h2 id="Módulo_()"><a name="Remainder">Módulo (%)</a></h2> + +<p>O operador de módulo retorna o primeiro operando módulo o segundo, isto é, var1 módulo var2, na sentença anterior, onde var1 e var 2 são variáveis. A função módulo é o resto inteiro da divisão de var1 por var2. <a href="http://wiki.ecmascript.org/doku.php?id=strawman:modulo_operator" title="http://wiki.ecmascript.org/doku.php?id=strawman:modulo_operator">Existe uma proposta de ter um operador real de módulo em uma versão futura do ECMAScript.</a></p> + +<h3 id="Sintaxe_5">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> var1 % var2 +</pre> + +<h3 id="Examples">Examples</h3> + +<pre class="brush: js">12 % 5 // 2 +-1 % 2 // -1 +NaN % 2 // NaN +</pre> + +<h2 id="Exponenciação_(**)"><a id="Exponenciação" name="Exponenciação">Exponenciação (**)</a></h2> + +<p>O operador de exponenciação retorna o resultado do primeiro operando elevado ao segundo operando. É o mesmo que <code>var1</code><sup><code>var2</code></sup>, onde <code>var1</code> e <code>var2</code> são variáveis. O operador de exponenciação é associativo à direita, ou seja, <code>a ** b ** c</code> é igual a <code>a ** (b ** c)</code>.</p> + +<h3 id="Sintaxe_6">Sintaxe</h3> + +<pre><strong>Operador:</strong> var1 ** var2 +</pre> + +<h3 id="Notas">Notas</h3> + +<p>Em várias linguagens como PHP e Python e outras que tem o operador de exponenciação (**), a exponenciação tem prioridade do que operações unárias, como + e -, mas tem algumas exceções. Por exemplo, no Bash o operador ** é definido por ter menos prioridade do que operadores unários. No JavaScript, é impossível escrever uma expressão de exponenciação ambígua, i.e. você não pode colocar um operador unário (<code>+/-/~/!/delete/void/typeof</code>) imediatamente antes do número base.</p> + +<pre>-2 ** 2; +// 4 no Bash, -4 em outras linguagens. +// Isso é inválido no JavaScript, pois a operação é ambígua. + + +-(2 ** 2); +// -4 no JavaScript e a intenção do autor não é ambígua. +</pre> + +<h3 id="Exemplos_5">Exemplos</h3> + +<pre>2 ** 3 // 8 +3 ** 2 // 9 +3 ** 2.5 // 15.588457268119896 +10 ** -1 // 0.1 +NaN ** 2 // NaN + +2 ** 3 ** 2 // 512 +2 ** (3 ** 2) // 512 +(2 ** 3) ** 2 // 64 +</pre> + +<p>Para inverter o sinal do resultado de uma expressão de exponenciação:</p> + +<pre>-(2 ** 2) // -4 +</pre> + +<p>Para forçar a base de uma expressão de exponenciação para ser um número negativo:</p> + +<pre>(-2) ** 2 // 4 +</pre> + +<div class="note"> +<p><strong>Nota:</strong> JavaScript também tem <a href="/pt-BR/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Bitwise_XOR">um operador de lógica binária ^ (XOR)</a>. <code>**</code> e <code>^</code> são diferentes (por exemplo : <code>2 ** 3 === 8</code> enquanto <code>2 ^ 3 === 1</code>.)</p> +</div> + +<h2 id="Incremento_()"><a name="Increment">Incremento (++)</a></h2> + +<p>O operador de incremento incrementa (adiciona um a) seu operando e retorna um valor;</p> + +<ul> + <li>Se usado na forma posfixa, com o operador depois do operando (por exemplo, x++), então ele retorna o valor antes de incrementá-lo.</li> + <li>Se usado na forma prefixa, com o operador antes do operando (por exemplo, ++x), então ele retorna o valor depois de incrementá-lo.</li> +</ul> + +<h3 id="Sintaxe_7">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> x++ or ++x +</pre> + +<h3 id="Exemplos_6">Exemplos</h3> + +<pre class="brush: js">// Posfixo +var x = 3; +y = x++; // y = 3, x = 4 + +// Prefixo +var a = 2; +b = ++a; // a = 3, b = 3 +</pre> + +<h2 id="Decremento_(--)"><a name="Decrement">Decremento (--)</a></h2> + +<p>O operador de decremento decrementa (subtrai um de) seu operando e retorna um valor.</p> + +<ul> + <li>Se usado na forma posfixa (por exemplo, x--), então ele retorna o valor antes de decrementá-lo.</li> + <li>Se usado na forma prefixa (por exemplo, --x), então ele retorna o valor depois de decrementá-lo.</li> +</ul> + +<h3 id="Sintaxe_8">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> x-- or --x +</pre> + +<h3 id="Exemplos_7">Exemplos</h3> + +<pre class="brush: js">// Posfixo +var x = 3; +y = x--; // y = 3, x = 2 + +// Prefixo +var a = 2; +b = --a; // a = 1, b = 1 +</pre> + +<h2 id="Negação_Unária_(-)"><a name="Unary_negation">Negação Unária (-)</a></h2> + +<p>O operador de negação unária precede seu operando e o nega.</p> + +<h3 id="Sintaxe_9">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> -x +</pre> + +<h3 id="Exemplos_8">Exemplos</h3> + +<pre class="brush: js">var x = 3; +y = -x; // y = -3, x = 3 +</pre> + +<h2 id="Soma_Unária_()"><a name="Unary_plus">Soma Unária</a> (+)</h2> + +<p>O operador de soma unária precede seu operando e calcula para seu operando mas tenta convertê-lo para um número, caso ainda não o seja. Apesar da negação unária (-) também poder converter não-números, a soma unária é a forma mais rápida e a forma preferida de converter alguma coisa em um número, porque ele não realiza nenhuma outra operação no número. Ele pode converter strings que representam inteiros e ponto flutuante, bem como os valores de não-string <code>true</code>, <code>false</code>, e <code>null</code>. Inteiros em formato decimal e hexadecimal ("0x"-prefixado) são suportados. Números negativos são suportados (não os hexadecimais). Caso não possa analisar um determinado valor, o operador retornará <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/NaN">NaN</a>.</p> + +<h3 id="Sintaxe_10">Sintaxe</h3> + +<pre class="syntaxbox"><strong>Operador:</strong> +x +</pre> + +<h3 id="Exemplos_9">Exemplos</h3> + +<pre class="brush: js">+3 // 3 ++"3" // 3 ++true // 1 ++false // 0 ++null // 0 +</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + <tr> + <td>ECMAScript 1ª Edição.</td> + <td>Padrão</td> + <td>Definição inicial.</td> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-11.3')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Definido em várias seções da especificação: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.6">Operadores aditivos</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.5">Operadores Multiplicativos</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.3">Expressões Posfixas</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4">Operadores Unários</a>.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-postfix-expressions')}}</td> + <td>{{Spec2('ES6')}}</td> + <td>Definido em várias seções da especificação: <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.6">Operadores aditivos</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.5">Operadores Multiplicativos</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.3">Expressões Posfixas</a>, <a href="http://www.ecma-international.org/ecma-262/5.1/#sec-11.4">Operadores Unários</a>.</td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_Navegadores">Compatibilidade com Navegadores</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Chrome for Android</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + </tr> + <tr> + <td>Basic support</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + <td>{{CompatVersionUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Operators/Assignment_Operators">Operatores de atribuição</a></li> +</ul> diff --git a/files/pt-br/conflicting/web/javascript/reference/operators/spread_syntax/index.html b/files/pt-br/conflicting/web/javascript/reference/operators/spread_syntax/index.html new file mode 100644 index 0000000000..a877d131bc --- /dev/null +++ b/files/pt-br/conflicting/web/javascript/reference/operators/spread_syntax/index.html @@ -0,0 +1,201 @@ +--- +title: Spread operator +slug: Web/JavaScript/Reference/Operators/Spread_operator +tags: + - JavaScript + - Operador +translation_of: Web/JavaScript/Reference/Operators/Spread_syntax +translation_of_original: Web/JavaScript/Reference/Operators/Spread_operator +--- +<div>{{jsSidebar("Operators")}}</div> + +<p>A sintaxe de propagação (<strong>Spread</strong>) permite que um objeto iterável, como um array ou string, seja expandida em locais onde zero ou mais argumentos (para chamadas de função) ou elementos (para literais de array) sejam esperados ou uma expressão de objeto seja expandida em locais onde zero ou mais pares de chave-valor (para literais de objeto) são esperados.</p> + +<h2 id="Sintaxe">Sintaxe</h2> + +<p>Para chamadas de função:</p> + +<pre class="brush: js">minhaFuncao(...objIteravel); +</pre> + +<p>Para array literais:</p> + +<pre class="brush: js">[...objIteravel, 4, 5, 6]</pre> + +<p>Desestruturação:</p> + +<pre class="brush: js">[a, b, ...objIteravel] = [1, 2, 3, 4, 5];</pre> + +<h2 id="Exemplos">Exemplos</h2> + +<h3 id="Uma_melhor_aplicação">Uma melhor aplicação</h3> + +<p><strong>Exemplo:</strong> é comum usar {{jsxref( "Function.prototype.apply")}} em casos onde você quer usar um array como argumentos em uma função.</p> + +<pre class="brush: js">function minhaFuncao(x, y, z) { } +var args = [0, 1, 2]; +minhaFuncao.apply(null, args);</pre> + +<p>Com o spread do ES2015 você pode agora escrever isso acima como:</p> + +<pre class="brush: js">function minhaFuncao(x, y, z) { } +var args = [0, 1, 2]; +minhaFuncao(...args);</pre> + +<p>Qualquer argumento na lista de argumento pode usar a sintaxe spread e pode ser usado várias vezes.</p> + +<pre class="brush: js">function minhaFuncao(v, w, x, y, z) { } +var args = [0, 1]; +minhaFuncao(-1, ...args, 2, ...[3]);</pre> + +<h3 id="Um_literal_array_mais_poderoso">Um literal array mais poderoso</h3> + +<p><strong>Exemplo:</strong> Hoje se você tiver um array e quer criar um novo array com esse existente fazendo parte dele, a sintaxe literal do array não é mais suficiente e você deve voltar para o código imperativo, usando uma combinação de <code>push</code>, <code>splice</code>, <code>concat</code>, etc. Com a sintaxe spread isso se torna muito mais sucinto:</p> + +<pre class="brush: js">var partes = ['ombros', 'joelhos']; +var letra = ['cabeca', ...partes, 'e', 'dedos']; // <span class="objectBox objectBox-array"><a class="objectLink "><span class="arrayLeftBracket">[</span></a><span class="objectBox objectBox-string">"</span></span>cabeca<span class="objectBox objectBox-array"><span class="objectBox objectBox-string">"</span><span class="arrayComma">, </span><span class="objectBox objectBox-string">"</span></span>ombros<span class="objectBox objectBox-array"><span class="objectBox objectBox-string">"</span><span class="arrayComma">, </span><span class="objectBox objectBox-string">"</span></span>joelhos<span class="objectBox objectBox-array"><span class="objectBox objectBox-string">"</span><span class="arrayComma">, </span><span class="objectBox objectBox-string">"e"</span><span class="arrayComma">, </span><span class="objectBox objectBox-string">"dedos"</span></span>] +</pre> + +<p>Assim como em spread para listas de argumentos <code>...</code> pode ser usado em qualquer lugar no literal do array e pode ser usado várias vezes.</p> + +<h3 id="Apply_para_new">Apply para new</h3> + +<p><strong>Exemplo:</strong> No ES5 não é possível usar <code>new</code> com <code>apply.</code> (Em ES5 termos, <code>apply</code> faz uma <code>[[Call]]</code> e nao um <code>[[Construct]].</code>) Em ES2015 a sintaxe spread naturalmente suporta isso:</p> + +<pre class="brush: js">var camposData = lerCamposData(bancoDeDados); +var d = new Date(...camposData);</pre> + +<h3 id="Um_push_melhor">Um push melhor</h3> + +<p><strong>Exemplo:</strong> {{jsxref("Global_Objects/Array/push", "push")}} é frequentemente usado para adicionar um array no final de um array existente. No ES5 isso é geralmente feito assim:</p> + +<pre class="brush: js">var arr1 = [0, 1, 2]; +var arr2 = [3, 4, 5]; +// Acrescenta todos itens do arr2 ao arr1 +Array.prototype.push.apply(arr1, arr2);</pre> + +<p>No ES2015 com spread isso se torna:</p> + +<pre class="brush: js">var arr1 = [0, 1, 2]; +var arr2 = [3, 4, 5]; +arr1.push(...arr2);</pre> + +<h2 id="Especificações">Especificações</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Especificação</th> + <th scope="col">Status</th> + <th scope="col">Comentário</th> + </tr> + </thead> + <tbody> + <tr> + <td>{{SpecName('ES2015', '#sec-array-initializer')}}</td> + <td>{{Spec2('ES2015')}}</td> + <td>Definido em várias seções da especificação: <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-array-initializer">Inicializador do array</a>, <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-argument-lists">Listas de argumento</a></td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-array-initializer')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Compatibilidade_com_browser">Compatibilidade com browser</h2> + +<p>{{CompatibilityTable}}</p> + +<div id="compat-desktop"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Chrome</th> + <th>Firefox (Gecko)</th> + <th>Internet Explorer</th> + <th>Opera</th> + <th>Safari (WebKit)</th> + </tr> + <tr> + <td>Operação spread em array literais</td> + <td>{{CompatChrome("46")}}</td> + <td>{{ CompatGeckoDesktop("16") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>7.1</td> + </tr> + <tr> + <td>Operação spread em chamadas de função</td> + <td>{{CompatChrome("46")}}</td> + <td>{{ CompatGeckoDesktop("27") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>7.1</td> + </tr> + <tr> + <td>Operação spread em desestruturação</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoDesktop("34") }}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + </tr> + </tbody> +</table> +</div> + +<div id="compat-mobile"> +<table class="compat-table"> + <tbody> + <tr> + <th>Feature</th> + <th>Android</th> + <th>Android Webview</th> + <th>Firefox Mobile (Gecko)</th> + <th>IE Mobile</th> + <th>Opera Mobile</th> + <th>Safari Mobile</th> + <th>Chrome for Android</th> + </tr> + <tr> + <td>Operação spread em array literais</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("46")}}</td> + <td>{{ CompatGeckoMobile("16") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + <td>{{CompatChrome("46")}}</td> + </tr> + <tr> + <td>Operação spread em chamadas de função</td> + <td>{{CompatNo}}</td> + <td>{{CompatChrome("46")}}</td> + <td>{{ CompatGeckoMobile("27") }}</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>8</td> + <td>{{CompatChrome("46")}}</td> + </tr> + <tr> + <td>Operação spread em desestruturação</td> + <td>{{CompatNo}}</td> + <td>{{CompatNo}}</td> + <td>{{ CompatGeckoDesktop("34") }}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatUnknown}}</td> + <td>{{CompatNo}}</td> + </tr> + </tbody> +</table> +</div> + +<h2 id="Veja_também">Veja também</h2> + +<ul> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Functions_and_function_scope/rest_parameters">Parâmetros rest</a></li> +</ul> |