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