js中各种类型的变量在if条件中是true还是false

js的弱类型让人感觉很多东西都比较迷惑,例如变量在if条件中到底是true还是false,如果在强类型语言中将一个非boolean类型的变量放在if条件中时,是需要进行类型转换的,但是js不需要,下面来进行测试,测试常见的变量类型在if条件中的表现

!function test1(){ 

<span style="color:#ff0000;">var a,b=-1,c= 1,d= 0,e=null,f=undefined,g='',h="";</span> 
if(!a){ 
console.log('a='+a) 
} 
if(!b){ 
console.log("b="+b) 
} 
if(!c){ 
console.log("c="+c) 
} 
if(!d){ 
console.log("d="+d) 
} 
if(!e){ 
console.log("e="+e) 
} 
if(!f){ 
console.log("f="+f) 
} 
if(!g){ 
console.log("g="+g) 
} 
if(!h){ 
console.log("h="+h) 
} 

}() 

设定了各种变量类型,分别放入if条件中

执行结果
a=undefined
d=0
e=null
f=undefined
g=
h=
i=false