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 - HTML的request类
Jul 15 Javascript
Stop SQL Server
Jun 21 Javascript
jBox 2.3基于jquery的最新多功能对话框插件 常见使用问题解答
Nov 10 Javascript
很不错的两款Bootstrap Icon图标选择组件
Jan 28 Javascript
JS实现图片延迟加载并淡入淡出效果的简单方法
Aug 25 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
Oct 11 Javascript
jQuery实现的鼠标响应缓冲动画效果示例
Feb 13 jQuery
JavaScript中的回调函数实例讲解
Jan 27 Javascript
在微信小程序中使用图表的方法示例
Apr 25 Javascript
js全屏事件fullscreenchange 实现全屏、退出全屏操作
Sep 17 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 Javascript
使用vue3重构拼图游戏的实现示例
Jan 25 Vue.js
基于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开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
ie与session丢失(新窗口cookie丢失)实测及解决方案
2013/07/15 PHP
php中通过curl检测页面是否被百度收录
2013/09/27 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
fancybox1.3.1 基于Jquery的插件在IE中图片显示问题
2010/10/01 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
IE中JS跳转丢失referrer问题的2个解决方法
2014/07/18 Javascript
jQuery简单实现QQ空间点赞已经取消点赞
2015/04/02 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
Node.js如何实现注册邮箱激活功能 (常见)
2017/07/23 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
js实现坦克移动小游戏
2019/10/28 Javascript
朴素贝叶斯算法的python实现方法
2014/11/18 Python
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
python实现类的静态变量用法实例
2015/05/08 Python
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
python字符串的方法与操作大全
2018/01/30 Python
Python简单计算文件MD5值的方法示例
2018/04/11 Python
Django ManyToManyField 跨越中间表查询的方法
2018/12/18 Python
python3注册全局热键的实现
2020/03/22 Python
Python分类测试代码实例汇总
2020/07/23 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
2020/09/16 HTML / CSS
工作的心得体会
2013/12/31 职场文书
优秀部门获奖感言
2014/02/14 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
软件售后服务方案
2014/05/29 职场文书
2014年中秋寄语
2014/08/11 职场文书
民政局2016年“六一”儿童节慰问活动总结
2016/04/06 职场文书