Esta página foi traduzida do inglês pela comunidade.Saiba mais e junte-se à comunidade MDN Web Docs.
Adição (+)
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since julho de 2015.
O operador de adição (+) produz a soma de operandos numéricos ou concatenação de strings.
In this article
Experimente
console.log(2 + 2);// Expected output: 4console.log(2 + true);// Expected output: 3console.log("hello " + "everyone");// Expected output: "hello everyone"console.log(2001 + ": A Space Odyssey");// Expected output: "2001: A Space Odyssey"Sintaxe
x + yDescrição
O operador de adição está encarregado para duas operações distintas, adição numérica e concatenação de Strings. Ao avaliar, ele primeiro coage ambos os operandos para primitivos chamando a função do objeto[@@toPrimitive]()()(com "default" como dica), e os métodos valueOf(), e toString(), nessa ordem. Em seguida, são testados os tipos dos dois operandos:
- Se um lado é uma string, o outro operando também éconvertido em uma string e eles são concatenados.
- Se ambos foremBigInts, a adição de BigInt será executada. Se um lado for um BigInt, mas o outro não, um
TypeErrorserá lançado. - Caso contrário, ambos os lados sãoconvertidos em números e a adição numérica é executada.
A concatenação de strings geralmente é considerada equivalente aliterais de modelo ouString.prototype.concat(), mas não são. A adição força a expressão a uma chamadaprimitive , que chamavalueOf() em prioridade; por outro lado, literais de modelo econcact() converte a expressão para uma string, que chamatoString() em prioridade. Se a expressão tiver o método@@toPrimitive, a concatenação de strings o chama com "default" como dica, enquanto literais de modelo usam "string". Isso é importante para objetos que têm diferentes representações de string e primitivas — comoTemporal, cujo métodovalueOf() lança.
const t = Temporal.Now.instant();"" + t; // Throws TypeError`${t}`; // '2022-07-31T04:48:56.113918308Z'"".concat(t); // '2022-07-31T04:48:56.113918308Z'Você é aconselhado a não usar "" + x para executar acoerção de string.
Exemplos
>Adição numérica
// Number + Number -> adição1 + 2; // 3// Boolean + Number -> adiçãotrue + 1; // 2// Boolean + Boolean -> adiçãofalse + false; // 0Concatenação de String
// String + String -> concatenação"foo" + "bar"; // "foobar"// Number + String -> concatenação5 + "foo"; // "5foo"// String + Boolean -> concatenação"foo" + false; // "foofalse"Especificações
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-addition-operator-plus> |