JavaScript类型系统之布尔Boolean类型详解


Posted in Javascript onJune 26, 2016

前面的话

布尔值Boolean类型可能是三种包装对象Number、String和Boolean中最简单的一种。Number和String对象拥有大量的实例属性和方法,Boolean却很少。从某种意义上说,为计算机设计程序就是与布尔值打交道,作为最基本的事实,所有的电子电路只能识别和使用布尔数据。本文将介绍布尔Boolean类型

定义

布尔Boolean类型表示逻辑实体,它只有两个值,保留字true和false,分别代表真和假这两个状态

Boolean包装类型是与布尔值对应的引用类型,在布尔表达式中使用Boolean对象容易造成误解

var b1 = true;
var b2 = new Boolean(true);
console.log(b1,typeof b1);//true 'boolean'
console.log(b2,typeof b2);//Boolean{[[PrimitiveValue]]: true} 'object'
console.log(b1.valueOf(), typeof b1.valueOf());//true 'boolean'
console.log(b2.valueOf(), typeof b2.valueOf());//true 'boolean'

应用场景

布尔类型主要应用于如下场景:

【1】条件和循环语句

布尔值主要应用于条件和循环语句的条件部分。比如,if语句中,如果布尔值为true执行第一段逻辑,如果为false执行另一段逻辑。通常将一个创建布尔值的比较直接与使用这个比较的语句结合在一起

if(a > 1){
//条件为true时,执行此处
}else{
//条件为false时,执行此处
}

【2】逻辑运算符

逻辑运算符又叫布尔运算符。逻辑非运算符总是返回布尔值,而逻辑或和逻辑与操作并非如此

同时使用一个逻辑非操作符,可以将类型转换为布尔型

console.log(!!1);//true
console.log(!!0);//false
console.log(!!' ');//true
console.log(!!'');//false

【3】关系运算符

关系运算符用于测试两个值之间的关系,根据关系是否存在而返回true或false,关系表达式总是返回一个布尔值,通常在if、while或for语句中使用关系表达式,用以控制程序的执行流程

console.log( 1 > 2);//false
console.log( 1 < 2);//true

转为布尔

将一个值转为布尔值可使用Boolean()转型函数

假值

转换成false的值称为假值(falsy value),这7个值包括undefined、null、+0、-0、NaN、false、""(空字符串)

console.log(Boolean(undefined));//false
console.log(Boolean(null));//false
console.log(Boolean(0));//false
console.log(Boolean(-0));//false
console.log(Boolean(NaN));//false
console.log(Boolean(''));//false
console.log(Boolean(false));//false

[注意]在Number()方法中空字符串和空白字符串都转换为0,而在Boolean方法中,空字符串""转换为false,而空白字符串" "转换为true

console.log(Number(''));//0
console.log(Number(' '));//0
console.log(Boolean(''));//false
console.log(Boolean(' '));//true

除了这7个假值外,其他的值转换为布尔值都是true,也称为真值(truthy value)

[注意]所有对象(包括空对象)的转换结果都是true,甚至连false对应的布尔对象new Boolean(false)也是true

console.log(Boolean({}));//true
console.log(Boolean([]));//true
console.log(Boolean(new Boolean(false)));//true
console.log(Boolean(false));//false
console.log(Boolean(new Boolean(null)));//true
console.log(Boolean(null));//false

实例方法

Boolean对象是与布尔值对应的包装类型,继承了Object对象的通用方法toString()、toLocaleString()、valueOf()这三个方法

【toString()】

toString()方法返回Boolean的字符串值('true'或'false')

【toLocaleString()】

toLocaleString()方法返回Boolean的字符串值('true'或'false')

【valueOf()】

valueOf()方法返回Boolean的原始布尔值(true或false)

console.log(true.valueOf());//true
console.log(true.toString());//'true'
console.log(true.toLocaleString());//'true'
console.log(Boolean(false).valueOf());//false
console.log(Boolean(false).toString());//'false'
console.log(Boolean(false).toLocaleString());//'false'

以上所述是小编给大家介绍的JavaScript类型系统之布尔Boolean类型详解的全部叙述,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Javascript 相关文章推荐
一个tab标签切换效果代码
Mar 27 Javascript
thinkphp中常用的系统常量和系统变量
Mar 05 Javascript
js闭包实例汇总
Nov 09 Javascript
解决jquery实现的radio重新选中的问题
Jul 03 Javascript
学习javascript面向对象 理解javascript对象
Jan 04 Javascript
jQuery实现横向带缓冲的水平运动效果(附demo源码下载)
Jan 29 Javascript
在Node.js中使用Javascript Generators详解
May 05 Javascript
JavaScript 巧学巧用
May 23 Javascript
使用jQuery实现两个div中按钮互换位置的实例代码
Sep 21 jQuery
ES6 Promise对象的应用实例分析
Jun 27 Javascript
js tab栏切换代码实例解析
Sep 03 Javascript
vue 使用post/get 下载导出文件操作
Aug 07 Javascript
基于JavaScript实现单选框下拉菜单添加文件效果
Jun 26 #Javascript
JQuery控制图片由中心点逐渐放大效果
Jun 26 #Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
Jun 26 #Javascript
jquery实现上传文件大小类型的验证例子(推荐)
Jun 25 #Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
Jun 25 #Javascript
文本框只能输入数字的实现方法(兼容IE火狐)
Jun 25 #Javascript
js操作XML文件的实现方法兼容IE与FireFox
Jun 25 #Javascript
You might like
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
swoole和websocket简单聊天室开发
2017/11/18 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
ie 处理 gif动画 的onload 事件的一个 bug
2007/04/12 Javascript
原生js编写设为首页兼容ie、火狐和谷歌
2014/06/05 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
js style.display=block显示布局错乱问题的解决方法
2016/09/21 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
在Vue项目中引入腾讯验证码服务的教程
2018/04/03 Javascript
vue实现div拖拽互换位置
2020/07/29 Javascript
element-ui 本地化使用教程详解
2019/10/28 Javascript
vue基于better-scroll实现左右联动滑动页面
2020/06/30 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
给Python入门者的一些编程建议
2015/06/15 Python
Python使用文件锁实现进程间同步功能【基于fcntl模块】
2017/10/16 Python
python将unicode和str互相转化的实现
2020/05/11 Python
美国著名的品牌折扣店:Burlington
2017/06/08 全球购物
国际象棋商店:The Chess Store
2018/07/09 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
C++面试题:关于链表和指针
2013/06/05 面试题
大学生个人总结的自我评价
2013/10/05 职场文书
安全生产投入制度
2014/01/29 职场文书
实用的简历自我评价
2014/03/06 职场文书
古汉语文学求职信范文
2014/03/16 职场文书
课堂打架检讨书200字
2014/11/21 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
如何用PHP websocket实现网页实时聊天
2021/05/26 PHP
如何理解及使用Python闭包
2021/06/01 Python
zabbix自定义监控nginx状态实现过程
2021/11/01 Servers
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers
Python Matplotlib绘制动画的代码详解
2022/05/30 Python
微软发布Windows 11今年最大更新22H2(附 ISO 镜像官方下载)
2022/09/23 数码科技