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 July 2015.

O operador de adição (+) produz a soma de operandos numéricos ou concatenação de strings.

Experimente

console.log(2 + 2);
// Expected output: 4

console.log(2 + true);
// Expected output: 3

console.log("hello " + "everyone");
// Expected output: "hello everyone"

console.log(2001 + ": A Space Odyssey");
// Expected output: "2001: A Space Odyssey"

Sintaxe

js
x + y

Descriçã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 forem BigInts, a adição de BigInt será executada. Se um lado for um BigInt, mas o outro não, um TypeError será lançado.
  • Caso contrário, ambos os lados são convertidos em números e a adição numérica é executada.

A concatenação de strings geralmente é considerada equivalente a literais de modelo ou String.prototype.concat(), mas não são. A adição força a expressão a uma chamada primitive , que chama valueOf() em prioridade; por outro lado, literais de modelo e concact() converte a expressão para uma string, que chama toString() 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 — como Temporal, cujo método valueOf() lança.

js
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 a coerção de string.

Exemplos

Adição numérica

js
// Number + Number -> adição
1 + 2; // 3
// Boolean + Number -> adição
true + 1; // 2
// Boolean + Boolean -> adição
false + false; // 0

Concatenação de String

js
// String + String -> concatenação
"foo" + "bar"; // "foobar"
// Number + String -> concatenação
5 + "foo"; // "5foo"
// String + Boolean -> concatenação
"foo" + false; // "foofalse"

Especificações

Specification
ECMAScript® 2025 Language Specification
# sec-addition-operator-plus

Compatibilidade de navegadores

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
Addition (+)

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Veja também