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、验证

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

three.js 第六节 - 纹理以及贴图【.hdr文件(hdr贴图)】- 色彩空间

素材 这是素材 更多素材、案例、项目 好几个G一共,加我q178373168,60大洋拿走 源码 源码 // ts-nocheck // 引入three.js import * as THREE from three // 导入轨道控制器 import { OrbitControls } from three/examples/jsm/controls/OrbitControls…

【考研数学】李林《880》25版主要变化汇总

25版李林880拿到手后对比,发现和24几乎没有太大差别(高数前两章20多道题目增删),然后24又和23版本一模一样 所以有24版本or23版本的880都可以,不用一定追求25年的! 880算是比较经典的习题了,搭…

UE引擎实现ShadowMap、体积光(C++)

前言 整体上参考了YivanLee大佬的这两篇文: 虚幻4渲染编程(灯光篇)【第一卷:各种ShadowMap】 虚幻4渲染编程(灯光篇)【第二卷:体积光】 正文 1、ShadowMap (1)创建工…

上下文管理器在Python中的妙用

更多Python学习内容:ipengtao.com Python上下文管理器是一个非常强大的工具,它能够帮助开发者在特定代码块前后自动执行特定的操作,常用于资源管理,如文件操作、数据库连接和锁定等。本文将详细介绍Python上下文管理器的概念、使用…

django学习入门系列之第三点《案例 商品推荐部分》

文章目录 划分区域搭建骨架完整代码小结往期回顾 划分区域 搭建骨架 /*商品图片&#xff0c;父级设置*/ .slider .sd-img{display: block;width: 1226px;height: 460px; }<!-- 商品推荐部分 --> <!--搭建出一个骨架--> <div class"slider"><di…

云计算基础技术

云计算基础技术概览 计算类产品主要提供算力&#xff0c;支持业务运行&#xff0c;例如网站、办公软件、数据分析等计算能力&#xff0c;目前典型的产品主要是虚拟化和容器&#xff0c;在公有云上的云主机本质也是虚拟机。网络类产品主要满足资源的网络连通性和隔离&#xff0c…

鸿蒙NEXT开发:工具常用命令—install

安装三方库。 命令格式 ohpm install [options] [[<group>/]<pkg>[<version> | tag:<tag>]] ... ohpm install [options] <folder> ohpm install [options] <har file> alias: i 说明 group&#xff1a;三方库的命名空间&#xff0c;可…

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

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

Open3D(C++) 删除点云中重复的点

目录 一、算法原理1、重叠点2、主要函数二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、重叠点 原始点云克隆一份   构造重叠区域   合并点云获得重叠点 2、主要…

【Mysql】多表、外键约束

多表 1.1 多表简述 实际开发中&#xff0c;一个项目通常需要很多张表才能完成。 例如一个商城项目的数据库,需要有很多张表&#xff1a;用户表、分类表、商品表、订单表… 1.2 单表的缺点 1.2.1 数据准备 创建一个数据库 db3 CREATE DATABASE db3 CHARACTER SET utf8;数据库…

Kompas AI数据分析与预测功能对比

一、引言 在现代商业环境中&#xff0c;数据分析与预测是企业制定战略决策的关键工具。通过对大量数据的分析&#xff0c;企业能够识别趋势、预测未来变化&#xff0c;并做出更为明智的决策。本文将对比Kompas AI与其他主要AI产品在数据分析与预测方面的能力&#xff0c;展示K…

【Linux】gdb调试器

一、gdb调试器背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须在源代码生成二进制程序的时候, 加上 -g 选项 二、安装gdb yum install gdb三、使用gdb 在Linux当中g…

btrace使用记录

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、商业变现、人工智能等&#xff0c;希望大家多多支持。 未经允许不得转载 目录 一、导读二、使用三、 推荐阅读 一、导…

【LLM Transparency Tool】用于深入分析和理解大型语言模型(LLM)工作原理的工具

背景 LLM Transparency Tool 是一个用于深入分析和理解大型语言模型&#xff08;LLM&#xff09;工作原理的工具&#xff0c;旨在增加这些复杂系统的透明度。它提供了一个交互式界面&#xff0c;用户可以通过它观察、分析模型对特定输入&#xff08;prompts&#xff09;的反应…

IPD流程开发阶段模板及表单

目录 简介 内容brief&#xff08;部分截图&#xff09; 作者简介 简介 最近一段时间因为公司这边需要规范化管理。 就顺便集中整理了一下各类资料。 部分资料呢&#xff0c;就按照类别逐步分享了出来。 正常来讲&#xff0c;每个公司都应该有一个部门&#xff0c; 来专…

CSS Grid网格布局

一、前言 二、Grid布局 1、基本介绍 2、核心概念 &#xff08;1&#xff09;网格容器 &#xff08;2&#xff09;网格元素 &#xff08;3&#xff09;网格列 &#xff08;4&#xff09;网格行 &#xff08;5&#xff09;网格间距 &#xff08;6&#xff09;网格线 三…

C语言 | Leetcode C++题解之第199题二叉树的右视图

题目&#xff1a; 题解&#xff1a; #define MAX_NODE_NUM 100 int* rightSideView(struct TreeNode* root, int* returnSize){if (root NULL) {*returnSize 0;return NULL;}int *res (int *)malloc(sizeof(int) * MAX_NODE_NUM);int cnt 0;struct TreeNode **record (st…

如何使用ossutil工具迁移本地文件到oss(最快速迁移方法)

1&#xff1a;下载ossutil工具&#xff0c;https://help.aliyun.com/zh/oss/developer-reference/install-ossutil&#xff08;注&#xff1a;根据不同的版本去下载&#xff09; 2&#xff1a;解压ossutil工具&#xff0c;并双击运行ossutil.bat文件。 3&#xff1a;输入配置命…

前端新手小白的第一个AI全栈项目---AI聊天室

前言 ok&#xff0c;大家好。- ̗̀(๑ᵔ⌔ᵔ๑)最近也是想做自己的第一个前后端分离的项目&#xff0c;刚好最近学了一点AI接口的实现。想着用接口做一个自己的ai聊天室并且尝试一下全栈式开发。中间真的解决了很多问题&#xff0c;也是成功之后也是想要将实现过程分享一下&a…

可持续性是 Elastic: 进步与新机遇的一年

作者&#xff1a;来自 Elastic Keith Littlejohns 我们最新的可持续发展报告&#xff08;Sustainability Report&#xff09;总结了 Elastic 又一个令人兴奋的进步年&#xff0c;我们的项目继续揭示新的机遇。过去的一年对于我们与主要利益相关者群体合作以更好地了解他们的目标…