if()中的判断条件其实是转换成Boolean类型对Boolean类型的判断
String类型
var a="test"; if(a){ alert("yes"); } else{ alert("no"); } //yes
var a="12"; //字符串类型 if(a){ alert("yes"); } else{ alert("no"); } //yes
var a="undefined"; //"null" 也一样,这里都是为字符串,而不是null,和undefined if(a){ alert("yes"); } else{ alert("no"); } //yes
remove external featured image
var a=""; if(a){ alert("yes"); } else{ alert("no"); } //no
Number类型
var a=1; if(a){ alert("yes"); } else{ alert("no"); } //yes
var a=Infinity;//无穷 if(a){ alert("yes"); } else{ alert("no"); } //yes
var a=-1; if(a){ alert("yes"); } else{ alert("no"); } //yes
var a=0; if(a){ alert("yes"); } else{ alert("no"); } //no
var a=NaN; if(a){ alert("yes"); } else{ alert("no"); } //no
Object类型
var a={};//任何对象 if(a){ alert("yes"); } else{ alert("no"); } //yes
var a=null; if(a){ alert("yes"); } else{ alert("no"); } //no
undefined类型
var a;//undefined if(a ){ alert("yes"); } else{ alert("no"); } //no
以上几个类型都会隐式地转换为对Boolean的判断
Boolean类型
var b= false; var a=new Boolean(b);//使用构造函数将Boolean对象保存在变量a中 if(a ){ alert("yes"); } else{ alert("no"); } //yes 因为这里的a是一个Boolean对象会被转为true 任何对象(除了null和undefined)都会转换为true
var b= false; var a=Boolean(b);//这里是一个Boolean值 if(a ){ alert("yes"); } else{ alert("no"); } //no
最后归纳下
Boolean()对不同数据类型的返回值 数据类型 转换为true的值 false的值 String 任何非空字符串 ""(空) number 任何非0(包括无穷大) 0和NaN object 任何对象 null undefined n/a(不适用) undefined