js关于if()else{}中的判定条件的认识,各种数据类型转换为Boolean类型的转换规则

2017-9-24 20:09:28 4,896 views

 
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

 

4

分享到微信朋友圈

打开微信,点击底部的“发现”,
使用“扫一扫”即可将网页分享至朋友圈。