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实现五子棋游戏兼容各浏览器(附源码)
Apr 24 Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 Javascript
$(document).ready(function() {})不执行初始化脚本
Jun 19 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
基于jQuery实现的无刷新表格分页实例
Feb 17 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
Angular刷新当前页面的实现方法
Nov 21 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
Apr 08 Javascript
3分钟读懂移动端rem使用方法(推荐)
May 06 Javascript
详解Vue中Axios封装API接口的思路及方法
Oct 10 Javascript
绘制微信小程序验证码功能的实例代码
Jan 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与MySQL开发中页面出现乱码的一种解决方法
2007/07/29 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
2011/05/29 PHP
PHP中捕获超时事件的方法实例
2015/02/12 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
javascript实现倒计时并弹窗提示特效
2015/06/05 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
jQuery xml字符串的解析、读取及查找方法
2016/03/01 Javascript
jQuery实现的多滑动门,多选项卡效果代码
2016/03/28 Javascript
js重写方法的简单实现
2016/07/10 Javascript
BootStrap中按钮点击后被禁用按钮的最佳实现方法
2016/09/23 Javascript
拖动时防止选中
2017/02/03 Javascript
使用grunt合并压缩js和css文件的方法
2017/03/02 Javascript
jQuery 中msgTips 顶部弹窗效果实现代码
2017/08/14 jQuery
使用jQuery实现页面定时弹出广告效果
2017/08/24 jQuery
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
JavaScript装饰者模式原理与用法实例详解
2020/03/09 Javascript
vant实现购物车功能
2020/06/29 Javascript
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Django中使用session保持用户登陆连接的例子
2019/08/06 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
关于Python错误重试方法总结
2021/01/03 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
为数据库创建索引都需要注意些什么
2012/07/17 面试题
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
双拥工作宣传标语
2014/06/26 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
Redis源码阅读:Redis字符串SDS详解
2021/07/15 Redis
Spring Boot实现文件上传下载
2022/08/14 Java/Android