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

news2024/11/19 21:27:06

一、前言

二、示例

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.coloradmin.cn/o/1867129.html

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

相关文章

【efinix】efinity如何安装官方补丁patch

efinix官网可以下载efinity的官方补丁。 下载 efinity-2023.2.307.5.10-windows-x64-patch.zip 解压缩补丁zip 压缩包内容 files/ : updated files to be copied into the Efinity installation run.sh : patch installation script (Linux on…

【Nginx】静态资源访问配置

nginx 静态资源访问配置 Nginx 静态资源访问配置 通过该片文章,你能了解图中的内容: 实际问题 Nginx 应该怎么写,才能匹配这个图片资源路径? http://47.120.10.110:7001/public/images/picture.jpg解决方案 你需要配置一个 N…

Redis-Geospatial数据类型及其常用命令详解

1.Redis概述 2.Geospatial 数据类型 Redis 的 Geospatial 数据类型可以存储地理空间的位置信息和执行地理相关的查询。比如查找指定半径内的所有位置、计算两个位置之间的距离等。Redis 使用有序集合 (sorted sets) 来实现这些功能。 3.存储和性能 Geospatial 数据在 Redis 中…

2023 年度国家科学技术奖励公布

人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…

php goto解密脚本源码

php goto解密脚本源码 源码下载:https://download.csdn.net/download/m0_66047725/89426171 更多资源下载:关注我。

【数学建模】 函数极值与规划模型

文章目录 函数极值与规划模型1. 线性代数和线性规划的联系1.1 线性代数的基本概念1.2 线性规划的基本概念1.3 线性代数与线性规划的联系矩阵和向量线性方程组单纯形法内点法凸优化 1.4 例子 2. Numpy有关矩阵运算示例2.1 矩阵的创建2.2 矩阵的基本运算2.3 矩阵的合并2.4 矩阵的…

.NET C# 使用OpenCV实现人脸识别

.NET C# 使用OpenCV实现模型训练、人脸识别 码图~~~ 1 引入依赖 OpenCvSHarp4 - 4.10.0.20240616 OpenCvSHarp4.runtime.win - 4.10.0.20240616 2 人脸数据存储结构 runtime directory | face | {id}_{name} | *.jpg id - 不可重复 name - 人名 *.jpg - 人脸照片3 Demo 3.…

搞定求职难题:工作岗位列表+简历制作工具 | 开源专题 No.75

SimplifyJobs/New-Grad-Positions Stars: 8.5k License: NOASSERTION 这个项目是一个用于分享和跟踪美国、加拿大或远程职位的软件工作机会列表。该项目的核心优势和关键特点如下: 自动更新新岗位信息便捷地提交问题进行贡献提供一键申请选项 BartoszJarocki/cv…

SR655 OCP3 网卡Legacy PXE 轮循设置

1、更改UEFI Boot Mode为UEFI,保存重启服务器,再次进入UEFI界面调整如下图例 更改如下所有网卡legacy 为PXE。后将Boot Mode 更改为legacy,保存退出。 如下图例操作依次更改所有网卡口 2、步骤1,更改Boot Mode 为Legacy保存退出重启服器后&…

SAP揭秘者-在QM标准功能增加取消UD的功能第二季

文章摘要: 上篇文章我已经给大家介绍怎么开发两个程序来取消UD,但是上篇文章中有提到这个时候去直接执行ZQEVAC40程序去取消物料凭证 则会报错,那么为了解决这个报错,我们需要更改后台配置。 接下来我给大家讲后台配置该怎么配置&…

Jetpack架构组件_Navigaiton组件_1.Navigaiton切换Fragment

1.Navigation主要作用 方便管理Fragment (1)方便我们管理Fragment页面的切换 (2)可视化的页面导航图,便于理清页面间的关系。 (3)通过destination和action完成页面间的导航 (4&a…

Docker 命令——安全

我们将学习两个命令。第一个命令是 docker container run 命令,这样你就能看到使用该命令的一些好处。其次,我们将看看 docker container diff 命令,你可以用它来查看在已有的镜像基础上做了什么。让我们看看如何使用这两个命令来确保容器的安…

【ARM-Linux篇】项目:智能家居

一、项目概述 •项目功能 通过语音控制客厅灯、卧室灯、风扇、人脸识别开门等,可以进行火灾险情监测,可以并且实现Sockect发送指令远程控制各类家电等 •项目描述 全志H616通过串口连接各模块硬件,检测语音的识别结果,分析语音识别的结果来对家电设备进行控制。摄像头拍…

山东大学多核并行2024年回忆版

2024.6.13回忆版 矩阵向量乘不可整除代码 集合通信与点对点通信的区别 块划分、循环划分、循环块划分(14个向量,4个进程) 按行访问还是按列访问快 SISD系统问题 循环依赖问题 问题:为什么不能对这个循环并行化&#xff0…

Vue移动端动态表单生成组件

FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。 帮助文档 | 源码下载…

科技赋能·创领未来丨智合同和百胜中国就Contract AI Studio项目达成合作

#智合同 #百胜中国 #AIGC #NLP #LLM #Contract AI Studio 近期,国内AIGC和LLM大语言模型发展可谓是如火如荼,其迅速崛起为社会和产业发展起到了非常重要的作用。人们利用AI技术(AIGC、LLM大语言模型、NLP等)将其赋能到企业生…

【ai】tx2 nx:ubuntu18.04 yolov4-triton-tensorrt 成功部署server 运行

isarsoft / yolov4-triton-tensorrt运行发现插件未注册? 【ai】tx2 nx: jetson Triton Inference Server 部署YOLOv4 【ai】tx2 nx: jetson Triton Inference Server 运行YOLOv4 对main 进行了重新构建 【ai】tx2 nx :ubuntu查找NvInfer.h 路径及哪个包、查找符号【ai】tx2…

Linux系统安装和卸载nginx

📖Linux系统安装和卸载nginx ✅下载✅安装✅启动nginx✅安装成系统服务✅常见问题:80端口被占用了✅卸载✅目录结构 以下介绍的是以源码编译安装方式: ✅下载 官方地址:https://nginx.org/en/download.html 123云盘地址&#x…

YOLOv8数据集标注

1 简介 数据集是必不可少的部分,数据集的优劣直接影响训练效果。一般来说,一个完整的数据集应该包括训练集、测试集和验证集。通常,数据集会被划分为训练集和测试集,比如将数据集的70%用作训练集,30%用作测试集。在进行…

【知识学习】Unity3D——Surface Shaderlightning的概念及使用方法示例

Unity3D是一个广泛使用的跨平台游戏引擎,它提供了强大的图形渲染功能。在Unity中,Shader是用于控制图形渲染过程的程序,它们运行在GPU上,用于计算屏幕上每个像素的颜色。Surface Shader和Lighting是Unity Shader编程中非常重要的概…