Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Muita gente que trabalha com JavaScript já se deparou com expressões como 1 < b < 2. Parece simples, mas esse tipo de comparação pode gerar resultados inesperados se não for bem compreendido. O erro comum é pensar que ela funciona como em matemática, onde a expressão avalia se o valor de b está entre 1 e 2 simultaneamente.
Na prática, o JavaScript interpreta essa expressão de forma diferente, porque ela é avaliada de forma sequencial, de esquerda para direita. Assim, 1 < b < 2 é interpretado como (1 < b) < 2. Como 1 < b retorna um booleano (true ou false), o resultado final será sempre um número (true convertido para 1 ou false para 0), e a comparação com < 2 é avaliada como 1 < 2 ou 0 < 2, o que sempre retorna true. Isso pode levar a bugs difíceis de detectar, especialmente em condições que dependem de intervalos precisos.
Para evitar esse tipo de erro, é importante entender que o JavaScript não suporta comparações encadeadas como em outras linguagens ou na matemática. A solução é explicitamente verificar cada limite separadamente, usando operadores lógicos. Por exemplo:
if (b >= 1 && b <= 2) {
// lógica aqui
}
Esse padrão garante que o valor de b esteja entre 1 e 2, inclusive. Além de ser mais claro, evita interpretações erradas e bugs causados por avaliação sequencial.
Imagine que você precisa validar se uma nota está entre 0 e 100. A abordagem correta seria:
const nota = 85. if (nota >= 0 && nota <= 100) {
console.log('Nota válida'). } else {
console.log('Nota inválida'). } A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar.
Se usar nota >= 0 && nota <= 100 você tem certeza de que a lógica está clara e correta. Já passar uma comparação encadeada como 0 <= nota <= 100 não funciona em JavaScript e pode gerar resultados inesperados. Sem esse critério, a solução pode parecer simples no começo e cara no suporte. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois.
Apesar de parecer mais verboso, usar operadores lógicos separados melhora a legibilidade e a segurança do código. Uma tentativa de simplificar com funções customizadas ou bibliotecas de validação pode facilitar em projetos maiores, mas para casos simples, o padrão de && é suficiente. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. Esse contexto ajuda a separar ganho real de novidade difícil de sustentar. A decisão fica mais saudável quando o time consegue medir o impacto depois. Sem esse critério, a solução pode parecer simples no começo e cara no suporte.
Entender como o JavaScript avalia comparações encadeadas é fundamental para evitar bugs em condições que envolvem intervalos. A melhor abordagem é sempre usar operadores lógicos explícitos, mesmo que isso implique um pouco mais de código. Assim, você garante que sua lógica seja clara e confiável, facilitando manutenção e evitando surpresas no futuro. Por isso, o recorte precisa considerar manutenção, validação e caminho de volta. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco. O valor aparece melhor quando operação, produto e engenharia olham para o mesmo risco.
exato, o pessoal acha que dá pra fazer tudo na mesma linha, mas fica difícil de entender depois.
boa, mas acho que em casos mais complexos uma lib de validação ajuda pra cacete, especialmente em formulários grandes.
concordo, melhor deixar tudo explícito. já passei por isso, confunde na hora de manter código antigo.
isso me pega em pipelines de validação automática. se não usar o método correto, dá trabalho depois pra corrigir.