javascript bool 强制类型转换

javascript中if条件何时为true呢? 除了有一些能直接比较出结果的表达式之外,对于直接将变量放入if 括号中,何时为true,何时为false呢。下面看具体例子。

var a;
 
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 false


var a=1;
 
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 true

var a=0;
 
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 false

var a=true;//或者a="true"
 
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 true

var a=false;//或者a="false"
 
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 false

此处的大小写是不区分的。


var a="";
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 false

var a="1212";//非空字符串,并且不为"false"
// 注意包含空格的字符串也是非空的 ("   ")
 if(a)
 
 {
  alert("true");
  }
   
else
  
 {
   alert("false");
   }
运行结果为 true


其本质就是js中强制类型转换的结果,也就是其他非bool类型转换成bool类型,js处理如下:

对于var a;

1. 如果a未赋值,则为null,会被强制转换为false;

2, 如果a为数值类型的话, 0 或0.000 为false,其他非0值为true;

3. 如果a为字符串的话, “” 和“false” 会被转换成false, 注意“false” 是不区分大小写的,就是说“False”,"FAlse"等都会被转换成false。

    其他字符串被转换成true 包括含有空格的空字符串(“     ”)。

4.如果a是其他类型:数组,function,对象,则会被转换成true;

有一种a为function需要说明,看下面例子:

var a=function(){};
  
  if( a())
  {
  alert("true");
  }
   else
   {
   alert("false");
   }
结果为false.

原因是没有返回结果的函数值的返回结果是 undefined。而undefined 会被当做false 处理。

注意: if(a) 和if(a()) 是完全不同的。if(a)是会一直返回true的,因为他是将函数强制转换。但是if((a))是将函数的返回结果强制转换。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值