Baseline Widely available
O operador de adição (+
) produz a soma de operandos numéricos ou concatenação de strings.
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 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:
TypeError
será lançado.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.
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// 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
// String + String -> concatenação
"foo" + "bar"; // "foobar"
// Number + String -> concatenação
5 + "foo"; // "5foo"
// String + Boolean -> concatenação
"foo" + false; // "foofalse"
Especificações Compatibilidade de navegadores Veja também
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4