この式を期待していたため、コードに多くのバグが発生していました。
Boolean([]);
はfalseと評価されます。
しかし、これはtrueと評価されたため、そうではありませんでした。
したがって、[]
を返す可能性のある関数は次のようになります。
// Where myCollection possibly returned [ obj1, obj2, obj3] or []
if(myCollection)
{
// ...
}else
{
// ...
}
期待したことをしませんでした。
[]
を空の配列と仮定するのは間違っていますか?
また、この動作はすべてのブラウザーで一貫していますか?または、そこにも落とし穴がありますか? Goolgle Chromeところでこの動作を観察しました。
から http://www.sitepoint.com/javascript-truthy-falsy/
次の値は常に偽物です。
「0」(引用符でゼロ)、「false」(引用符でfalse)、空の関数、空の配列、空のオブジェクトなど、他のすべての値は真実です。
その配列の.length
をチェックして、要素が含まれているかどうかを確認する必要があります。
if (myCollection) // always true
if (myCollection.length) // always true when array has elements
if (myCollection.length === 0) // same as is_empty(myCollection)