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语言本身谈项目实战
Dec 27 Javascript
javascript 鼠标滚轮事件
Apr 09 Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
js 数值转换为3位逗号分隔的示例代码
Feb 19 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
javascript如何定义对象数组
Jun 07 Javascript
js中获取 table节点各tr及td的内容简单实例
Oct 14 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
Feb 03 Javascript
Angular2学习教程之组件中的DOM操作详解
May 28 Javascript
Vue.js实现可配置的登录表单代码详解
Mar 29 Javascript
Ajax实现页面无刷新留言效果
Mar 24 Javascript
JS前端轻量fabric.js系列物体基类
Aug 05 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 表单数据的获取代码
2009/03/10 PHP
thinkphp,onethink和thinkox中验证码不显示的解决方法分析
2016/06/06 PHP
详解PHP编码转换函数应用技巧
2016/10/22 PHP
Git命令之分支详解
2021/03/02 PHP
javascript中的array数组使用技巧
2010/01/31 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
react-native-video实现视频全屏播放的方法
2018/03/19 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
vue中使用GraphQL的实例代码
2019/11/04 Javascript
基于原生JS封装的Modal对话框插件的示例代码
2020/09/09 Javascript
python统计文本文件内单词数量的方法
2015/05/30 Python
Python正则表达式匹配中文用法示例
2017/01/17 Python
Python正则表达式分组概念与用法详解
2017/06/24 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
python异常触发及自定义异常类解析
2019/08/06 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
Python之字典对象的几种创建方法
2020/09/30 Python
Python random模块的使用示例
2020/10/10 Python
Python 无限级分类树状结构生成算法的实现
2021/01/21 Python
结合CSS3的新特性来总结垂直居中的实现方法
2016/05/30 HTML / CSS
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
Trunki英国官网:儿童坐骑式行李箱
2017/05/30 全球购物
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
问卷调查计划书
2014/01/10 职场文书
安全生产先进个人事迹材料
2014/12/30 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
2019年暑期安全广播稿!
2019/07/03 职场文书
Pytorch数据读取之Dataset和DataLoader知识总结
2021/05/23 Python
java.util.NoSuchElementException原因及两种解决方法
2022/06/28 Java/Android