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中也使用$美元符号来代替document.getElementById
Jun 19 Javascript
javscript对象原型的一些看法
Sep 19 Javascript
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
一个jquery实现的不错的多行文字图片滚动效果
Sep 28 Javascript
JavaScript DOM进阶方法
Apr 13 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
js es6系列教程 - 新的类语法实战选项卡(详解)
Sep 02 Javascript
node前端模板引擎Jade之标签的基本写法
May 11 Javascript
layui添加动态菜单与选项卡
Jul 26 Javascript
vue实现二级导航栏效果
Oct 19 Javascript
原生JS与JQ获取元素的区别详解
Feb 13 Javascript
微信小程序实现可拖动悬浮图标(包括按钮角标的实现)
Dec 29 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、mysqli)访问mysql
2013/02/06 PHP
php数组查找函数总结
2014/11/18 PHP
深入解析PHP的Yii框架中的event事件机制
2016/03/17 PHP
php变量与数组相互转换的方法(extract与compact)
2016/12/02 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
jQuery 开天辟地入门篇一
2009/12/09 Javascript
Javascript 自定义类型方法小结
2010/03/02 Javascript
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
jquery $(document).ready()和window.onload的区别浅析
2015/02/04 Javascript
JavaScript将数字转换成大写中文的方法
2015/03/23 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
JS数组返回去重后数据的方法解析
2017/01/03 Javascript
几种tab切换详解
2017/02/03 Javascript
JS FormData上传文件的设置方法
2017/07/05 Javascript
在vue项目中,使用axios跨域处理
2018/03/07 Javascript
AngularJS $http post 传递参数数据的方法
2018/10/09 Javascript
Vue使用NProgress的操作过程解析
2019/10/10 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
手动实现vue2.0的双向数据绑定原理详解
2021/02/06 Vue.js
python matplotlib实现将图例放在图外
2020/04/17 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
Django静态文件加载失败解决方案
2020/08/26 Python
利用python如何实现猫捉老鼠小游戏
2020/12/04 Python
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
生态学毕业生自荐信
2013/10/27 职场文书
经贸日语毕业生自荐信
2013/11/03 职场文书
人事专员岗位职责说明书
2014/07/30 职场文书
解除劳动合同协议书范本
2014/09/13 职场文书
写给老婆的保证书
2015/02/27 职场文书
质量整改通知单
2015/04/21 职场文书
公积金贷款承诺书
2015/04/30 职场文书
2015年小学师德师风建设工作总结
2015/10/23 职场文书
关于元旦的广播稿2016
2015/12/17 职场文书
HTML+CSS制作心跳特效的实现
2021/05/26 HTML / CSS
Python使用海龟绘图实现贪吃蛇游戏
2021/06/18 Python
MySQL系列之一 MariaDB-server安装
2021/07/02 MySQL