Em JavaScript, um valor é falsyif se a coerção do tipo embutido do JavaScript o converte para false
. Por exemplo, considere o seguinte if
declaração:
if (v) { console.log('v is not falsy');}
O console.log()
só será executado se v
não for um dos valores abaixo:
false
0
-
0n
: 0 como um BigInt -
''
: Cordel vazio null
undefined
NaN
Estes 7 valores são os únicos valores falsificados em JavaScript. Qualquer valor que não seja falso é falso.
Em particular, um objecto não-nulo é sempre verdadeiro, mesmo que a sua função valueOf()
devolva um valor falso.
function isFalsy(v) { return !v;}// `false`. The object form of `0` is truthy, even though 0 is falsy.isFalsy(new Number(0));
Recomendas
Usar truthy/falsy para coerciões de tipo implícito em if
declarações istypically confusas. É raro encontrar um caso em que os 7 valores falsificados são exatamente o conjunto de valores que você quer procurar.
Por exemplo, suponha que você esteja implementando uma função que verifica que uma string é menor que 25 caracteres.
function checkLength(v) { if (!v) { throw new Error('Must provide a string!'); } return v.length < 25;}
Felizmente, checkLength('')
irá lançar um erro porque a string vazia éfalsy. Em vez disso, você deve verificar se v
é uma string:
function checkLength(v) { if (typeof v !== 'string') { throw new Error('Must provide a string!'); } return v.length < 25;}
Valores nulos
Em vez de verificar valores verdadeiros/falsificados, você normalmente quer verificar valores “nulos”. Um dos casos de uso comum para verificações falsificadas é certificar-se de que você não obtém um erro TypeError: Cannot read property 'prop' of null
ao acessar uma propriedade de um valor v
.
É seguro acessar v.prop
a menos que v
seja estritamente igual a null
ou undefined
. Mesmo NaN.prop
está bem.
const x = Number('abc');x; // NaNx.prop; // undefined
Verifica se v == null
é equivalente a v === null || v === undefined
. Em outras palavras, um valor é vagamente igual a null
somente se for estritamente igual a null
ou undefined
. Portanto, verificar se v == null
é frequentemente mais preciso do que verificar se os valores são verdadeiros ou falsificados.
Mais Tutoriais Fundamentos
- Como comparar objectos em JavaScript
- Como verificar se uma variável JavaScript está indefinida
- A diferença entre let e var em JavaScript
- Interpolação de Cordas JavaScript
- Variáveis Globais em JavaScript
- Como verificar por `NaN` em JavaScript
- JavaScript Enums
>
>
>