Article image

ll

llI9Vr llI9VraxGioleiriliiyDXixtlie04/03/2023 11:50
Compartilhe

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.

Compartilhe
Comentários (3)

MS

Mateus Santos - 04/03/2023 21:17

Ops, super verdade, Giancarlo! Vou corrigir o post :D


Realmente não foi um erro de complicação, mas sim lógico (tempo de execução), então a cachola acaba confundindo, haha


Giancarlo Rodrigues
Giancarlo Rodrigues - 04/03/2023 15:14

Amigo, só uma observação: no primeiro exemplo não dará erro. Apenas não sairá o valor esperado, mas não dará erro. O que acontecerá é que em vez de somar 10 com 2 ele vai concatenar e a saída será 102.


Mas é interessante mesmo o uso desse operador. Vlw!!

Ronald Simplicio
Ronald Simplicio - 04/03/2023 13:14

Aprendi mais uma coisa que não sabia, valeu!