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正确获取元素样式详解
Aug 07 Javascript
jQuery 类twitter的文本字数限制带提示效果插件
Apr 16 Javascript
jQuery获取文本节点之 text()/val()/html() 方法区别
Mar 01 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
Jul 25 Javascript
基于jQuery插件实现点击小图显示大图效果
May 11 Javascript
原生JS取代一些JQuery方法的简单实现
Sep 20 Javascript
3种不同的ContextMenu右键菜单实现代码
Nov 03 Javascript
JS实现列表页面隔行变色效果
Mar 25 Javascript
详解如何配置vue-cli3.0的vue.config.js
Aug 23 Javascript
Angular2之二级路由详解
Aug 31 Javascript
详解Node.js异步处理的各种写法
Jun 09 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
如何利用http协议发布博客园博文评论
2015/08/03 PHP
浅谈JavaScript中面向对象技术的模拟
2006/09/25 Javascript
Javascript----文件操作
2007/01/18 Javascript
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
JavaScript对象和字串之间的转换实例探讨
2013/04/21 Javascript
实例代码详解jquery.slides.js
2015/11/16 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
详谈javascript异步编程
2016/02/21 Javascript
jQuery插件pagination实现无刷新分页
2016/05/21 Javascript
jQuery短信验证倒计时功能实现方法详解
2016/05/25 Javascript
BootStrap 附加导航组件
2016/07/22 Javascript
vue中配置mint-ui报css错误问题的解决方法
2017/10/11 Javascript
jQuery easyui datagird编辑行删除行功能的实现代码
2018/09/20 jQuery
Vue渲染过程浅析
2019/03/14 Javascript
Vue 动态组件components和v-once指令的实现
2019/08/30 Javascript
Vue中常用rules校验规则(实例代码)
2019/11/14 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
python从sqlite读取并显示数据的方法
2015/05/08 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
详解python列表生成式和列表生成式器区别
2019/03/27 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python使用原始套接字发送二层包(链路层帧)的方法
2019/07/22 Python
使用Django搭建网站实现商品分页功能
2020/05/22 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
大学生职业规划范文:象牙塔生活的四年计划
2014/01/14 职场文书
军人违纪检讨书
2014/02/04 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
研究生求职自荐书
2014/06/23 职场文书
元旦晚会主持词开场白
2015/05/28 职场文书
分布式架构Redis中有哪些数据结构及底层实现原理
2022/03/13 Redis
Java数组详细介绍及相关工具类
2022/04/14 Java/Android
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js