JS - VOCÊ PRECISA SABER DO OPERADOR UNÁRIO "+"
- #JavaScript
Imagine o seguinte código:
//js
let a = "10"
let b = 2
console.log(a + b) // erro de lógica (imprimirá 102)
O código dará erro de tempo de execução e imprimirá 102. Isso porque a variável "a" não se trata de um número, e sim de uma string; ou seja, o JS irá concatenar um com o outro. Geralmente você usa uma função JS, certo? Mas o JS tem um operador exclusivamente para isso, e é o "+".
let a = "10"
let b = 2
console.log(+a + b) // 12
Claro, ninguém vai deixar de programar porque não conhece, porém o operador é mais eficiente do que qualquer função padrão do JS.
Na esmagadora maioria das linguagens, isso não existe; o plus unary sempre se tratará de manutenção de sinal, como a matemática usa.
CUIDADO
Esse carinha também converte outras coisas para número. Exemplo:
+true // 1
+false // 0
+NaN // NaN
+"Infinity" // Infinity
+null // null
let a = []
+a // 0
mas se seu código chegou ao ponto de ter que converter array vazio para número, tem algo muito errado nele, haha!
Ok, mas e as funções Number() e parseInt()?
Para falar sobre elas, temos que ir um pouco mais afundo no operador unário. Quando você usa esse operador, o JS remove os espaços em branco nos cantos e então interpreta aquele valor como um número. Simples, né? Já o parseInt() é mais coeso: vai lidar com valores mesmo que não sejam números. Vamos exemplificar por código:
const string = "42px";
+string; // NaN
parseInt(str); // 42
Já o Number() precisa lidar com valores especiais. Por exemplo, "Infinity", "NaN" e outros.
Desvantagens
- Difícil de ler
O programador pode muitas vezes confundir com concatenação, por exemplo; além que a maioria não está
familiarizado;
- Não tão completo quanto o parseInt
- Não tão intuitivo
O método Number(), por exemplo, deixa a vontade de deixar aquele valor em Number muito mais clara.
Te ajudei? Me ajude também! Dê um upvote e me siga. Deixe nos comentários o que achou, se já conhecia e se você utiliza essa solução que poucas pessoas utilizam.