JavaScript中常用数据类型做布尔值(Boolean)转换

一、前言

二、示例

1、String转Boolean

2、Number转Boolean

3、NaN、Null、undefined 转Boolean

4、Object转Boolean

5、Array转Boolean

6、Symbol转Boolean

三、总结

四、思考


一、前言

JavaScript中,经常需要对一些值进行boolean判断,根据判断结果进一步实现不同的分支流程;

可以使用Boolean函数对这些值进行类型转换;

本文主要记录常用的数据类型做Boolean转换的结果;

二、示例

// 1、String转Boolean
console.log(Boolean(""));        // false
console.log(Boolean("AAA"));     // true
console.log(Boolean("   "));     // true// 2、Number转Boolean
console.log(Boolean(0));    // false
console.log(Boolean(1));    // true
console.log(Boolean(-1));   // true// 3、特殊值转Boolean
console.log(Boolean(null));             // false
console.log(Boolean(NaN));              // false
console.log(Boolean(undefined));        // false// 4、Object转Boolean
console.log(Boolean({}));                 // true
console.log(Boolean({ name: "Abc" }));    // true// 5、Array转Boolean
console.log(Boolean([]));               // true
console.log(Boolean([1, 2, 3]));        // true// 6、Symbol转Boolean
console.log(Boolean(Symbol()));             // true
console.log(Boolean(Symbol("")));           // true
console.log(Boolean(Symbol(0)));            // true
console.log(Boolean(Symbol(null)));         // true
console.log(Boolean(Symbol(undefined)));    // true
console.log(Boolean(Symbol(NaN)));          // true

1、String转Boolean

注意:

长度非0的空字符串,做Boolean转换的结果为true

字符串做Boolean转换前先使用trim()方法,移除字符串两侧的空白字符;

2、Number转Boolean

数值型只有0的Boolean转换为false;

NaN的Boolean转换为false;

3、NaN、Null、undefined 转Boolean

 NaN、Null、undefined做Boolean转换均为false;

4、Object转Boolean

对象类型的值做Boolean转换,结果均为true;

注意:空对象的Boolean转换值为true; 

5、Array转Boolean

数组类型的值做Boolean转换,结果均为true;

注意:空数组的Boolean转换值为true; 

6、Symbol转Boolean

 Symbol类型的值做Boolean转换,结果均为true;

三、总结

  • String类型的值,只有长度为0的空串,Boolean转换结果为false,其他均为true;
  • Number类型的值,只有0的Boolean转换结果为false,其他均为true;
  • NaN、null、undefined,Boolean转换结果均为false;
  • Object类型的值,Boolean转换结果均为true(包括空对象{});
  • Array类型的值,Boolean转换结果均为true(包括空数组[]);
  • 使用Symbol()创建的任何值,Boolean转换结果均为true;

四、思考

1、问题

曾经遇到过这样一个有趣的问题:

问题1: 1 == '1'

问题2: 1 === '1'

这两个表达式的结果是什么?为什么?

 2、说明

 这个问题就是涉及到类型转换的相关内容:

“ == ” 号,表示先做类型转换,在做比较;

“ === ” 号,表示先比较类型,再比较值;

3、解析

(1)对于问题1:

1(Number型),Boolean转换结果为true;

'1' (String型),Boolean转换结果为true;

即可转换为 true == true,显然是成立的,因此比较结果为true;

(2)对于问题2:

1,为Number型,'1' ,为String型;

两者类型不同,直接返回false;

若两者类型相同,才会继续做值的比较;

4、验证

=======================================================================

每天进步一点点,记录一下这个有用的小知识~!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36066.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDoS攻击的最新防御策略:从检测到缓解的全方位方案

在数字化浪潮的推动下,互联网已成为现代社会的血脉。然而,随着网络空间的不断膨胀,分布式拒绝服务(DDoS)攻击如同潜伏在暗处的猛兽,随时准备发动致命一击,威胁着网络的稳定与安全。面对这一严峻…

前端-echarts tooltip展示多项自定义数据

效果如图,鼠标滑动到某一个柱子的时候,出现这一项数据的多个自定义数据,外加自己的模板样式渲染。 希望能展示每一列中的多个自定义数据 代码部分 主要是在data中,value就是实际展示的主数据,其他字段名为自定义的数…

Linux常见操作问题

1、登录刚创建的用户,无法操作。 注:etc/passwd文件是Linux操作系统中存储用户账户信息的文本文件,包含了系统中所有用户的基本信息,比如用户名、用户ID、用户组ID、用户家目录路径。 注:etc: 这个目录存放所有的系统…

Java工具包——Lombok

目录 1. maven仓库手动导入依赖注解 1.1 maven仓库引入依赖 1.2 在类上使用Data注解 1.3 在属性上使用Getter与Setter注解 2. EditStarters插件注解 2.1 安装EditStarters插件 2.2 在pom.xml中进行操作 2.3 在java对象类中使用注解 3. lombok工具使用结果查看 3.1…

腾讯云CVM,CentOS8系统下部署Java-Web项目步骤详解

在CVM中部署项目首先要配置好JDK,Tomcat,Mysql(这里以Tomcat和Mysql为例)。部署JDK和Tomcat的步骤可以参考 CentOS7系统下部署tomcat,浏览器访问localhost:8080/_不积跬步,无以至千里;不积小流,无以成江河。-CSDN博客 我这里从Mysql的安装和设…

HDOJ5616 Jam‘s balance

目录 HDOJ5616 Jams balance题目描述背景输入输出 题解解法一解法二优化 打赏 HDOJ5616 Jam’s balance 题目描述 背景 有 N N N个已知质量的砝码,分别询问给出的 M M M个质量能否被称出 输入 第一行输入一个变量 T T T,表示有 T T T组数据&#xf…

数据预处理功能教程,上传文件生成知识库 | Chatopera

如何快速的生成高质量的知识库? 数据预处理功能教程 | Chatopera 云服务低代码定制聊天机器人 关于 Chatopera Chatopera 云服务重新定义聊天机器人,https://bot.chatopera.com 定制智能客服、知识库、AI 助手、智慧家居等智能应用,释放创新…

【java算法专场】双指针(上)

目录 前言 基本原理 对撞指针 快慢指针 移动零 算法思路 算法步骤 代码实现 算法分析 复写零 算法思路 算法步骤 代码实现 快乐数 算法思路 算法步骤 代码实现 盛最多水的容器 ​编辑算法思路 代码实现 前言 双指针是一种在数组或链表等线性数据结构中高效…

Axure 教程 | 雅虎新闻焦点

主要内容 在雅虎首页,新闻焦点大图和焦点小图同步切换轮播,本课程我们来学习如何实现这个效果。 交互说明 1.页面载入后,切换当前屏幕显示的5张焦点图,小图标处以横线提示当前焦点图。 2.鼠标移入焦点大图,新闻标题显示…

马斯克的SpaceX星舰有多牛?我们离殖民火星还有多远?

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 埃隆马斯克是一位知名的企业家和工程师,他掌握着多家公司,涉及多个领域,包括电动汽车、太空探索、太阳能、脑…

Charles 证书迁移/复制,实现手机安装一次证书可以连接多个设备的 charles 效果

如果你希望在一个手机上安装一次证书,但是使用这个手机可能在不同的时候去连接你自己安装了Charles的不同设备。比如你在公司有有一个电脑,你在家里也有一个电脑,甚至还有一个笔记本等。 如果想实现只给手机安装一次证书,就可以都…

告别数据线!轻松实现iOS和安卓设备间的文件共享

用 AirDroid 的附近传输功能,完全免费,几十个G的文件也可以相互传输。不限制iPhone和iPad数量,多个设备同时登录也不会强迫下线。 当你要在苹果手机和安卓手机之间传输文件,请将AirDroid安装到两台手机上,然后登录同一…

[AI开发配环境]VSCode远程连接ssh服务器

文章目录 总览:ssh连接远程服务器连接免密登录:Docker:ssh连接远程宿主机后,进一步连接并使用其中的docker容器reload window 配置解释器:CtrlP,在上面输入“>python”, 然后选selecet interpreter运行命…

Ubuntu磁盘分区和挂载 虚拟机扩容 逻辑卷的创建和扩容保姆及教程

目录 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 2、Linux的磁盘分区和挂载 3、创建逻辑卷和逻辑卷的扩容 1、VMware虚拟机Ubuntu20.04系统磁盘扩容 通过下图可以看出我们的根磁盘一共有20G的大小,现在我们把它扩容为30G 注:如果你的虚拟机有快照是无…

CV每日论文--2024.6.26

1、StableNormal: Reducing Diffusion Variance for Stable and Sharp Normal 中文标题:StableNormal:减少扩散方差以实现稳定且锐利的法线 简介:本文介绍了一种创新解决方案,旨在优化单目彩色输入(包括静态图片与动态…

最新自助下单彩虹云商城系统源码,含小储云商城模板免授权

最新彩虹商城源码,含小储云商城模板免授权,试用了一下还行,具体的大家可以看看 源码下载:https://download.csdn.net/download/m0_66047725/89405387 更多资源下载:关注我。

通过混合栅极技术改善p-GaN功率HEMTs的ESD性能

来源:Improved Gate ESD Behaviors of p-GaN PowerHEMTs by Hybrid Gate Technology(ISPSD 24年) 摘要 本工作中,首次证明了混合栅极技术在不增加额外面积和寄生效应的前提下,能有效提升p-GaN HEMTs的栅极静电放电(E…

2024广东省职业技能大赛云计算赛项实战——构建CICD

构建CI/CD 前言 题目如下: 构建CI/CD 编写流水线脚本.gitlab-ci.yml触发自动构建,具体要求如下: (1)基于镜像maven:3.6-jdk-8构建项目的drone分支; (2)构建镜像的名称&#xff1a…

浅浅谈谈如何利用Javase+多线程+计算机网络的知识做一个爬CSDN阅读量总访问量的程序

目录 我们发现csdn的文章 首先为了印证我们的想法 我们用postman往csdn我们任意一篇文章发起post请求 发送请求 ​编辑获得响应结果 我们发现我们的阅读量上涨 PostRequestSender类 但是我们经过测试发现 定义一个字符串数组 把URL放进去 然后延迟启动 在线程池里面…

SaaS架构Client/Server应用的实验室LIS系统源码,服务可拆分,功能易扩展

LIS系统,即实验室(检验科)信息系统,它是医院信息管理的重要组成部分之一,LIS系统采用了智能辅助功能来处理大信息量的检验工作,即LIS系统不仅是自动接收检验数据,打印检验报告,系统保…