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 相关文章推荐
JavaScript中的细节分析
Jun 30 Javascript
JavaScript转换农历类实现及调用方法
Jan 27 Javascript
js实现屏蔽默认快捷键调用自定义事件示例
Jun 18 Javascript
在JavaScript中构建ArrayList示例代码
Sep 17 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Sep 26 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
Jun 01 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
React Native开发封装Toast与加载Loading组件示例
Sep 08 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
移动端 Vue+Vant 的Uploader 实现上传、压缩、旋转图片功能
Jun 10 Javascript
vue-router的钩子函数用法实例分析
Oct 26 Javascript
逐行分析鸿蒙系统的 JavaScript 框架(推荐)
Sep 17 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代码
2012/07/14 PHP
php汉字转拼音的示例
2014/02/27 PHP
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
Smarty模板类内部原理实例分析
2019/07/03 PHP
客户端静态页面玩分页
2006/06/26 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
js或者jquery判断图片是否加载完成实现代码
2013/03/20 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
Javascript中的String对象详谈
2014/03/03 Javascript
JQuery CheckBox(复选框)操作方法汇总
2015/04/15 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
使用Angular缓存父页面数据的方法
2017/01/03 Javascript
loading动画特效小结
2017/01/22 Javascript
vue2.0+ 从插件开发到npm发布的示例代码
2018/04/28 Javascript
JavaScript轮播停留效果的实现思路
2018/05/24 Javascript
Vue作用域插槽slot-scope实例代码
2018/09/05 Javascript
小程序云开发之用户注册登录
2019/05/18 Javascript
Vue触发隐藏input file的方法实例详解
2019/08/14 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
VUE页面中通过双击实现复制表格中内容的示例代码
2020/06/11 Javascript
[49:43]VG vs FNATIC 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[04:22]DOTA2大事件之护国神翼
2020/08/14 DOTA
Python新手在作用域方面经常容易碰到的问题
2015/04/03 Python
初学python的操作难点总结(新手必看篇)
2017/08/03 Python
Python读写文件基础知识点
2019/06/10 Python
python单线程下实现多个socket并发过程详解
2019/07/27 Python
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
一文带你掌握Pyecharts地理数据可视化的方法
2021/02/06 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
奇怪的鱼:Weird Fish
2018/03/18 全球购物
汽车检测与维修专业求职信
2014/07/04 职场文书
助学贷款贫困证明
2014/09/23 职场文书
个人借条范本
2015/05/25 职场文书