[Javascript] Melhore seu código com valores Truthy e Falsy
Há um tempo atrás navegando pelo Stackoverflow (costume né), encontrei uma pergunta bem simples que me deixou intrigado com as respostas recebidas.
Bem, claramente nosso amigo veio de outra linguagem, a julgar pelo o que ele está tentando fazer. Para resolver essa questão temos diversos caminhos, então vamos analisar as respostas que deram.
Excelente, todas funcionam perfeitamente. No entanto, você, como um excelente desenvolvedor, sabe que dá para melhorar esse código. Por exemplo:
Poderíamos tirar o "else" e retornar diretamente. Como a segunda resposta fez.
Também poderíamos reduzir para uma linha usando um ternário.
function checkArray(arr) {
return arr.length > 0 ? true : false;
}
Legal, ficou ótima nossa função, mas algo me incomoda ainda. Para resolver esse incômodo, apresento à vocês valores Truthy e Falsy.
Mas afinal, o que são valores Truthy?
Basicamente são valores considerados "true" em uma expressão booleana. Já Falsy, é falso.
Aqui vai uma listinha dos valores Falsy em Javascript:
- false, como era de se esperar
- 0, zero
- -0, zero negativo (oi?)
- 0n, zero em BigInt
- "", String vazia
- null, undefined e NaN
Sabendo disso, podemos retirar aquele pequeno incômodo da nossa função. Agora que sabemos que 0 é um valor Falsy e que quando usado em uma expressão booleana resultará como "false", podemos simplificar nossa condição para ver apenas o tamanho do array.
function checkArray(arr) {
return arr.length ? true : false;
}
Ótimo, nossa função está cada vez melhor. Mas podemos simplificar ainda mais utilizando o poder dos valores Truthy e Fasly.
function checkArray(arr) {
return arr.length;
}
Calma aí, desse jeito você está retornando um número e não é bem o que esperamos desta função.
Então para resolver isso, precisamos aplicar uma expressão booleana nesse valor para ser convertido. Com isso podemos utilizar uma técnica bem conhecida para extrair esse valor boolean.
function checkArray(arr) {
return !!arr.length;
}
Primeiro negamos o valor fazendo que o zero vire "true", então negamos novamente para ter seu verdadeiro valor boolean, "false". Fazendo nossa função funcionar perfeitamente.
Por hoje é só, abraços!