转换为Boolean

true && false

JavaScript中有两个值:true 和 false ,它们代表布尔值中的 “真” 和 “假”。下面看一个例子,看看JavaScript中有哪些 “假” 值。例:

var a = [undefined,null,false,+0,-0,NaN,''];
for(var i = 0; i < a.length; i++){console.log(!!a[i]);      //结果为: (7) false
}
  • 从上面这个例子可以看到: “undefined” “null” “false” “+0” “-0” “NaN” (字符串空 ’ ’ ) 这七个值经过类型转换为 Boolean 值的值为 false。

除了以上七个值以外,JavaScript 中其他值转换为布尔值都为 “真” (true) 。

  • 所以JavaScript中的值可以分为以下两类:
    1.可以被转换为 false 的值;
    2.转换为 true 的值;

假值对象

JavaScript 的值可以分为真值和假值,这里说一个特殊情况:

var a = new Boolean(false);
var b = new Boolean(0);
var c = new Boolean('');
if(a && b && c){console.log('if条件的值为 true');
}
if(+a || +b || +c || document.all){//不会执行
}
  • 上面说了,JS 中只有七个值经过类型转换后是 false。a,b,c 都是对象,不是七个值之一,第一个 if 判断为 true ,那么第二个 if 判断条件应该是 true ,然而第二给 if 条件判断为 false。两个条件有何不同?不同在第二个 if 判断每个值进行了一次类型转换。

这就是假值对象,它们和普通对象没什么区别,都有属性、原型。但是经过类型转换为布尔值后,它们的值为 false。 列出的 document.all 这个对象就是个假值对象。

隐式转换为Boolean

  • 以下几种代码会有隐式转换为 Boolean 的情况:
  1. if(…) 语句
  2. for( ;… ; ;)循环
  3. while(…) 和 do …while(…) 循环
  4. …? … : … 条件判断语句
  5. 逻辑运算符与或非( && , ||),其中 && 只包括左边条件判断

&& 和 || 的布尔转换

下面看一个例子:

var a = 24;
var b = 'age';
var c = null;
a || b;   //  24
a && b;   // 'age'
c || a;   // 24
c && b;   //null
  • 上面的语句不像C语言一样直接返回 true 或者 false,所以 || 和 && 是怎么一个执行过程?

过程是这样的:

  • || 和 && 会先对左边的值进行判断,如果不是布尔值,就先转换为布尔值,然后再进行条件判断。

  • || 左边的值如果为 true 就返回左边的值,如果是 false ,则返回右边的值(不会类型转换)。

  • && 左边的值如果为 true 就返回右边的值(不会类型转换),如果为 false , 则返回左边的值。

哈哈,不管它们的条件判断怎么样,返回的都是它的值,而不是判断的结果。而且看起来 || 和 && 恰好是相反的。它们两个是不是和以下类似?

  • || ----> a ? a : b;
  • && -----> a ? b : a:

|| 和 && 与以上两种条件判断情况是类似的。

  • 在这里我们同时对 if ( a && b) 有了更加清晰的认识,a && b 返回的并不一定是 true 或 false ,而是返回的 b,至于能判断条件,是因为 if 对它进行了隐式强制转换。

JavaScript类型转换: Boolean相关推荐

  1. java js 转换_[Java教程]javascript 类型转换。

    [Java教程]javascript 类型转换. 0 2016-10-11 18:00:06 目录: 1 : 伪对象 2 : 转换为字符串 3 : 数字转字符串 4 : 转换为数字 5 : 转换为Bo ...

  2. 透彻研究Javascript类型转换

    Javascript 中有5种基本类型(不包括 symbol),以及对象类型,他们在不同的运算中会被系统转化为不同是类型,当然我们也可以手动转化其类型. Javascript 类型转换中的坑极多,就连 ...

  3. JavaScript类型转换之显式类型转换

    JavaScript中显式类型转换有六类,分别是Number(mix).parseInt(string).parseFloat(string).String(mix).toString().Boole ...

  4. java的布尔类型转换_java string类型转换boolean类型的方法

    下面小编就为大家带来一篇java string类型转换boolean类型的方法.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 今天偶然想把string 类型转换成 bo ...

  5. JavaScript中Boolean是什么?

    一.Boolean 是什么? bool 是表示 true 或 false 的基础数据类型.Boolean 是表示 true 或 false 的对象数据类型,可以把其他类型转换为 Boolean 类型. ...

  6. Javascript类型转换的规则

    Javascript的变量是松散类型的,它可以存储Javascript支持的任何数据类型,其变量的类型可以在运行时被动态改变.请看示例: 1 2 3 var n = 10; n = "hel ...

  7. 一道面试题引发的对JavaScript类型转换的思考

    最近群里有人发了下面这题: 实现一个函数,运算结果可以满足如下预期结果: add(1)(2) // 3 add(1, 2, 3)(10) // 16 add(1)(2)(3)(4)(5) // 15 ...

  8. JavaScript数据类型 - Boolean类型

    Boolean类型 Boolean类型是JavaScript中使用的最多的一种类型,该类型只有两个字面值:true和false.这两个值与数字值不是一回事,因此true不一定等于1,而false也不一 ...

  9. JavaScript类型转换

    javascript是一种弱类型的语言,变量和类型无关,所以有时需要我们进行类型转换 一.数字型转换(number) 两种方法: 1.number:类型转化走的是v8引擎最底层机制的转化规则: 先将引 ...

最新文章

  1. MySQL与MongoDB之SQL语法对比
  2. CentOs 6.0 下安装cacti的syslog插件
  3. python编程从入门到精通 叶维忠 pdf-零基础如何学习python?十本精品python书籍推荐...
  4. 隐马尔可夫(HMM)
  5. 全球及中国汽车轮胎再制造市场销售产值与运营发展模式分析报告2022年
  6. 2017.3.5 yveh测试
  7. 基于Labview与单片机的多通道温度采集系统设计
  8. 2021全国人工智能大赛(NAIC)视觉编码赛道初赛一阶段baseline分享
  9. 数据可视化笔记5 时间数据可视化
  10. PHP 编写“九九乘法表”
  11. 类神经网络训练不起来怎么办——机器学习模型训练指南
  12. 【机器学习7】决策树
  13. Java 移除重复节点 | 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。
  14. 分支语句和循环语句(分支语句)
  15. java8之日期、时间
  16. 照片和木马合成一张照片
  17. matlab每两个数插0,【求助】matlab里两个相等的数相减为什么不等于0呢
  18. 八邻域跟踪算法matlab,八邻域轮廓跟踪算法(Eight neighborhood contour tracking algorithm).doc...
  19. Oracle数据库访问性能优化
  20. 北峰校园巡更管理+智能通信解决方案

热门文章

  1. 大众点评Windows Phone 7客户端正式发布
  2. 强化学习入门--甄景贤
  3. C/C++财务报销审批
  4. 毁掉孩子专注力的4件事,90%的家长都在做!
  5. mysql使用FROM_UNIXTIME将时间戳按日期group by
  6. matlab将三维模型渲染成二维视图,由三维图生成二维视图的新探讨
  7. [工具][原创]全屏找图点击工具网页找图工具使用教程
  8. 计算机制图水平测试成绩查询,普通话水平测试成绩查询系统平台
  9. VB+ACCESS干部档案管理系统设计与实现
  10. extern ‘‘C‘‘