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在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
jquery属性过滤选择器使用示例
Jun 18 Javascript
一个简单的jquery的多选下拉框(自写)
May 05 Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 Javascript
JS防止网页被嵌入iframe框架的方法分析
Sep 13 Javascript
JavaScript 控制字体大小设置的方法
Nov 23 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
JavaScript正则表达式函数总结(常用)
Feb 22 Javascript
使用 vue-i18n 切换中英文效果
May 23 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
Jul 19 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
基于elementUI竖向表格、和并列的案例
Oct 26 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 set_time_limit()函数的使用详解
2013/06/05 PHP
php读取出一个文件夹及其子文件夹下所有文件的方法示例
2017/06/15 PHP
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
点击页面其它地方隐藏该div的两种思路
2013/11/18 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
原生JS查找元素的方法(推荐)
2016/11/22 Javascript
Angular 通过注入 $location 获取与修改当前页面URL的实例
2017/05/31 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
vue路由嵌套的SPA实现步骤
2017/11/06 Javascript
Angular实现的table表格排序功能完整示例
2017/12/22 Javascript
JavaScript学习教程之cookie与webstorage
2019/06/23 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
2019/09/13 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
vue路由结构可设一层方便动态添加路由操作
2020/08/31 Javascript
python抓取网页内容示例分享
2014/02/24 Python
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
分享python数据统计的一些小技巧
2016/07/21 Python
用python统计代码行的示例(包括空行和注释)
2018/07/24 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
Python可以实现栈的结构吗
2020/05/27 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
阿里健康官方海外旗舰店:阿里健康国际自营
2017/11/24 全球购物
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
离职保密承诺书
2014/05/28 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
伏羲庙导游词
2015/02/09 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
python爬虫之selenium库的安装及使用教程
2021/05/23 Python
详解Laravel框架的依赖注入功能
2021/05/27 PHP
详解JavaScript中Arguments对象用途
2021/08/30 Javascript