Encontrei muitos bugs no meu código porque esperava esta expressão:
Boolean([]);
para avaliar como falso.
Mas este não foi o caso, pois foi avaliado como verdadeiro.
Portanto, funções que possivelmente retornaram []
assim:
// Where myCollection possibly returned [ obj1, obj2, obj3] or []
if(myCollection)
{
// ...
}else
{
// ...
}
não fez as coisas esperadas.
Estou enganado ao supor que é []
uma matriz vazia?
Além disso, esse comportamento é consistente em todos os navegadores? Ou há alguma pegadinha lá também? Observei esse comportamento no Goolgle Chrome, aliás.
javascript
arrays
object
conditional
racl101
fonte
fonte
myCollection.length > 0
?myCollection
fornull
ouundefined
. Você precisa usarif(myCollection && myCollection.length > 0)
.myCollection.length > 0
oferece um valor booleano que está fazendo o que o OP pediu ... ele ainda precisa fazer o trabalho a partir daí.Respostas:
De http://www.sitepoint.com/javascript-truthy-falsy/
Os seguintes valores são sempre falsos:
Todos os outros valores são verdadeiros, incluindo "0" (zero entre aspas), "falso" (falso entre aspas), funções vazias, matrizes vazias e objetos vazios.
fonte
[] == false
ela avalia paratrue
.==
comparador no link que você postou. Comentei apenas para ter cuidado ao esperar avaliação verdadeira ou falsa.Você deve verificar o
.length
desse array para ver se ele contém algum elemento.fonte