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实现上传图片前的预览(TX的面试题)
Aug 14 Javascript
JavaScript 异步调用框架 (Part 2 - 用例设计)
Aug 03 Javascript
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
myEvent.js javascript跨浏览器事件框架
Oct 24 Javascript
jQuery ui插件的使用方法代码实例
May 08 Javascript
javascript的parseFloat()方法精度问题探讨
Nov 26 Javascript
Jquery中的层次选择器与find()的区别示例介绍
Feb 20 Javascript
jQuery+css实现的时钟效果(兼容各浏览器)
Jan 27 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
浅谈vue后台管理系统权限控制思考与实践
Dec 19 Javascript
微信小程序事件流原理解析
Nov 27 Javascript
JS如何实现手机端输入验证码效果
May 13 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
一个好用的分页函数
2006/11/16 PHP
PHP 文件类型判断代码
2009/03/13 PHP
php中autoload的用法总结
2013/11/08 PHP
ThinkPHP的Widget扩展实例
2014/06/19 PHP
laravel-admin解决表单select联动时,编辑默认没选上的问题
2019/09/30 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
$.format,jquery.format 使用说明
2011/07/13 Javascript
JavaScript中的变量声明早于赋值分析
2012/03/01 Javascript
jQuery 1.8 Release版本发布了
2012/08/14 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
基于jQuery通过jQuery.form.js插件实现异步上传
2015/12/13 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
必备的JS调试技巧汇总
2016/07/20 Javascript
总结Javascript中数组各种去重的方法
2016/10/04 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
2019/07/04 Javascript
Vue请求java服务端并返回数据代码实例
2019/11/28 Javascript
京东优选小程序的实现代码示例
2020/02/25 Javascript
Python的requests网络编程包使用教程
2016/07/11 Python
解决Python2.7中IDLE启动没有反应的问题
2018/11/30 Python
Python内存管理实例分析
2019/07/10 Python
python爬虫 基于requests模块的get请求实现详解
2019/08/20 Python
python ubplot使用方法解析
2020/01/10 Python
Pandas缺失值2种处理方式代码实例
2020/06/13 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
Russell Stover巧克力官方网站:美国领先的精美巧克力制造商
2016/11/27 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
如何选择使用结构还是类
2014/05/30 面试题
幼儿园招生广告
2014/03/19 职场文书
新手上路标语
2014/06/20 职场文书
2014年学校财务工作总结
2014/12/06 职场文书
小班教师个人总结
2015/02/05 职场文书
邮政营业员岗位职责
2015/04/14 职场文书
健康证明
2015/06/19 职场文书
2016年三八节红领巾广播稿
2015/12/17 职场文书
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
Java基础——Map集合
2022/04/01 Java/Android