测试代码

<script>
console.log(undefined?true:false);//false
console.log(""?true:false); //false
console.log(0?true:false); //false
console.log(null?true:false); //false
console.log(NaN?true:false); //false

console.log(null==undefined); //ture
console.log(0==false); //true
console.log(0==undefined); //false
console.log(""==undefined); //false
console.log(false==undefined); //false
console.log(null==""); //false
console.log(null==0); //false
console.log(null==false); //false
console.log(NaN==false); //false

console.log({}?true:false); //true
console.log([]?true:false); //true
</script>

结论

undefined,"",0,null,NaN 作为判断条件都返回false,因此在if(v)判断使用中,都可以作为不成立的条件。

但在对比中,判断为false的两个值并不一定相等。

空对象和空数组,作为条件判断返回的是true。