javascript bool 强制类型转换

原创 2013年12月04日 12:53:30

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))是将函数的返回结果强制转换。


js 六种数据类型的区别及bool 转换判断

一、bool型转换判断: 1、true 和 1 比较是相同,false 和 0 比较是相同(是 “==” 比较),因为内部会实现数据类型的 转化,将true 转换成1,将false 转换成0, js...
  • kai161
  • kai161
  • 2013年12月20日 15:16
  • 10455

C# bool类型转化为字符串首字母会大写

C#中bool类型在转化为字符串类型时会自动大些首字母!!!!!!!!!......... 这样:.. 怎么解决呢。。 如果想在bool类型是 都转化为小写的 就这样 ...
  • CommandBaby
  • CommandBaby
  • 2016年06月06日 16:04
  • 2365

js中Boolean值为false和true的情况:

如果逻辑对象无初始值或者其值为 0、-0、null、""、false、undefined 或者 NaN,那么对象的值为 false。       否则,其值为 true(即使当自变量为字符串 "fal...
  • li2327234939
  • li2327234939
  • 2016年12月30日 15:49
  • 3962

js中parseInt()与parseFloat(),Number(),Boolean(),String()转换

js将字符串转数值的方法主要有三种 转换函数、强制类型转换、利用js变量弱类型转换。 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数。前者...
  • lai123wei
  • lai123wei
  • 2012年02月23日 16:56
  • 78255

js 各类型和bool型比较

js 中各类型和boolean类型比较结果测试
  • u011389577
  • u011389577
  • 2016年08月17日 17:12
  • 500

JS字符串False转Boolean

大家都知道在JS的世界里, 0、-0、null、""、false、undefined 或 NaN,这些都可以自动转化为布尔的 false,那么字符串的"false"是不是false呢,答案是否定的,i...
  • wuyou1336
  • wuyou1336
  • 2017年05月01日 23:48
  • 3364

javascript bool 强制类型转换

javascript中if条件何时为true呢? 除了有一些能直接比较出结果的表达式之外,对于直接将变量放入if 括号中,何时为true,何时为false呢。下面看具体例子。 var a; if...
  • WEN525765
  • WEN525765
  • 2013年12月04日 12:53
  • 2303

JavaScript中的类型转换(挺全的!)

Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变。请看示例: 1 2 3 var...
  • qq_34986769
  • qq_34986769
  • 2016年08月09日 18:28
  • 219

JavaScript 中的强制类型转换

JavaScript 作为一个动态编程语言,其中的数据类型会随着程序运行而动态改变。对于很多人来说,强制类型转换很容易造成程序出错,而要记住所有的转换方式又是一件不那么容易的事情。...
  • xjlinme
  • xjlinme
  • 2017年12月18日 23:03
  • 81

【JavaScript】封装对象与强制类型转换

认识封装对象 在开始之前,我们先看一个例子,以便之后更轻松的理解封装对象的概念。"tick".toUpperCase //function toUpperCase() String....
  • hj7jay
  • hj7jay
  • 2017年04月19日 09:25
  • 597
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:javascript bool 强制类型转换
举报原因:
原因补充:

(最多只允许输入30个字)