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 相关文章推荐
JS 文件传参及处理技巧分析
May 13 Javascript
理解Javascript_10_对象模型
Oct 16 Javascript
jquery固定底网站底部菜单效果
Aug 13 Javascript
使用jQuery实现星级评分代码分享
Dec 09 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
Bootstrap表单Form全面解析
Jun 13 Javascript
详解Angular开发中的登陆与身份验证
Jul 27 Javascript
javascript笔记之匿名函数和闭包
Feb 06 Javascript
JavaScript验证知识整理
Mar 24 Javascript
Element-ui table中过滤条件变更表格内容的方法
Mar 02 Javascript
jQuery插件实现弹性运动完整示例
Jul 07 jQuery
脚手架vue-cli工程webpack的作用和特点
Sep 29 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学习之数组的定义和填充
2011/04/17 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
php实现统计IP数及在线人数的示例代码
2020/07/22 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
javascript new一个对象的实质
2010/01/07 Javascript
判断浏览器的javascript版本的代码
2010/09/03 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
关于JS管理作用域的问题
2013/04/10 Javascript
浅谈javascript 函数属性和方法
2015/01/21 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
angularJS Provider、factory、service详解及实例代码
2016/09/21 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
在iframe中使bootstrap的模态框在父页面弹出问题
2017/08/07 Javascript
NodeJS实现一个聊天室功能
2019/11/25 NodeJs
微信小程序实现日历小功能
2020/11/18 Javascript
python嵌套函数使用外部函数变量的方法(Python2和Python3)
2016/01/31 Python
Python 3中的yield from语法详解
2017/01/18 Python
解决Python对齐文本字符串问题
2019/08/28 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
xml有哪些解析技术?区别是什么
2016/04/26 面试题
XML文档面试题
2015/08/05 面试题
护士演讲稿优秀范文
2014/04/30 职场文书
安全责任书范文
2014/08/25 职场文书
扶贫办主任查摆“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
四风问题对照检查整改措施思想报告
2014/10/05 职场文书
个人作风建设心得体会
2014/10/22 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
班主任寄语2015
2015/02/26 职场文书
2015年女生节活动总结
2015/02/27 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
《七月的天山》教学反思
2016/02/19 职场文书
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技