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 用6N±1法求素数 实例教程
Oct 20 Javascript
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
js限制checkbox选中个数以限制六个为例
Jul 15 Javascript
jquery中attr和prop的区别分析
Mar 16 Javascript
javascript中html字符串转化为jquery dom对象的方法
Aug 27 Javascript
Angular 4依赖注入学习教程之Injectable装饰器(六)
Jun 04 Javascript
angular过滤器实现排序功能
Jun 27 Javascript
微信JSAPI Ticket接口签名详解
Jun 28 Javascript
WebPack配置vue多页面的技巧
May 15 Javascript
vue.js动画中的js钩子函数的实现
Jul 06 Javascript
vue.js自定义组件实现v-model双向数据绑定的示例代码
Jan 08 Javascript
Vue.Draggable实现交换位置
Apr 07 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数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
php实现图片缩放功能类
2013/12/18 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
Smarty中的注释和截断功能介绍
2015/04/09 PHP
yii2实现根据时间搜索的方法
2016/05/25 PHP
jQuery插件 tabBox实现代码
2010/02/09 Javascript
js控制淡入淡出示例代码
2013/11/12 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
jQuery中end()方法用法实例
2015/01/08 Javascript
使用impress.js制作幻灯片
2015/09/09 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
JS实现禁止用户使用Ctrl+鼠标滚轮缩放网页的方法
2017/04/28 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
说说Vuex的getters属性的具体用法
2019/04/15 Javascript
在Express中提供静态文件的实现方法
2019/10/17 Javascript
[01:01:04]2018DOTA2亚洲邀请赛 4.5 淘汰赛 OpTic vs TNC 第一场
2018/04/06 DOTA
在Python的web框架中中编写日志列表的教程
2015/04/30 Python
Python实现字符串与数组相互转换功能示例
2017/09/22 Python
python 设置文件编码格式的实现方法
2017/12/21 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python创建数字列表的示例
2019/11/28 Python
计算pytorch标准化(Normalize)所需要数据集的均值和方差实例
2020/01/15 Python
使用Python构造hive insert语句说明
2020/06/06 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
团员学习总结的自我评价范文
2013/10/14 职场文书
学前班教师的自我鉴定
2013/12/05 职场文书
工作失职检讨书500字
2014/10/17 职场文书
西游记读书笔记
2015/06/25 职场文书
Python入门之基础语法详解
2021/05/11 Python
利用Python判断你的密码难度等级
2021/06/02 Python
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技