JavaScript 判断 null 、undefined、NaN的可靠方法、验证以及注意事项

索引

  • 判断方法
    • 判断undefined
    • 判断null
    • 判断NaN
  • 注意事项
    • undefined和null和比较
    • NaN和自己比较

有些时候需要判断类型是否为null、undefined或者NaN,常用的方法有以下:

判断方法

判断undefined

使用typeof

typeof xxx === 'undedfined'

在这里插入图片描述

注意:typeof无法判断null,并且 typeof null 会得到'object'
在这里插入图片描述


判断null

value == nullvalue === null

let value = null
console.log(value)
console.log(`the type of value is ${value==null}\nthe type of value is ${value===null}`)

在这里插入图片描述

在有些文章里看到了下面这种方法,思路是通过排除来确定类型为null,但实际上是不严谨的

!value && value!=0 && typeof value!='undefined'

let value = null
console.log( `Is the type of value null? ${ !value && value!=0 && typeof value!='undefined' }` )

在这里插入图片描述
许多笔记里基本都是给的这个式子,看上去好像没有问题,但实际上这是错的。

js中,当参数为: undefined0false'' 或者 ""NaNnull时,转为布尔值会得到false

上面的式子可以排除undefined0false''"",但是不能排除NaN,也就是说当参数值为NaN或者null时,上面的逻辑运算式都会得到true,请看以下:

function check(value){return !value && value!=0 && typeof value!='undefined'
}console.log(`Boolean(NaN) is ${Boolean(NaN)}, Boolean(null) is ${Boolean(null)}`)
console.log(`check(null) is ${check(null)}, but check(NaN) is ${check(NaN)}`)

在这里插入图片描述
所以这种方法并不严谨

判断NaN

isNaN(value) //就这一个

在这里插入图片描述

注意事项

undefined和null和比较

使用===
在这里插入图片描述

NaN和自己比较

请注意,NaN不和任何一个值相等,包括它自己

在这里插入图片描述

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

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

相关文章

【后端面经-Java】JVM垃圾回收机制

【后端面经-Java】JVM垃圾回收机制 1. Where:回收哪里的东西?——JVM内存分配2. Which:内存对象中谁会被回收?——GC分代思想2.1 年轻代/老年代/永久代2.2 内存细分 3. When:什么时候回收垃圾?——GC触发条…

若依cloud(RuoYi-Cloud)新增业务模块和功能模块增删改查演示

前言 看了几篇文章感觉都不太满意,索性自己来写一篇。 一、后端 后端新建业务模块流程大致如下: 1、后端新建一个(在ruoyi-module模块下)业务模块,仿照已有的模块将此模块配置好,例如仿照系统模块&…

CodeGeex论文阅读

《CodeGeeX: A Pre-Trained Model for Code Generation with Multilingual Evaluations on HumanEval-X》 论文地址:https://arxiv.org/pdf/2303.17568.pdf 代码地址:https://github.com/THUDM/CodeGe 一、简介 CodeGeeX,是一个具有130亿…

银河麒麟高级服务器操作系统V10安装mysql数据库

一、安装前 1.检查是否已经安装mysql rpm -qa | grep mysql2.将查询出的包卸载掉 rpm -e --nodeps 文件名3.将/usr/lib64/libLLVM-7.so删除 rm -rf /usr/lib64/libLLVM-7.so4.检查删除结果 rpm -qa | grep mysql5.搜索残余文件 whereis mysql6.删除残余文件 rm -rf /usr/b…

【多线程】(六)Java并发编程深度解析:常见锁策略、CAS、synchronized原理、线程安全集合类和死锁详解

文章目录 一、常见锁策略1.1 乐观锁和悲观锁1.2 读写锁1.3 重量级锁和轻量级锁1.4 自旋锁1.5 公平锁和非公平锁1.6 可重入锁和不可重入锁 二、CAS2.1 什么是CAS2.2 CAS的实现原理2.3 CAS应用2.4 ABA问题 三、synchronized原理3.1 synchronized锁的特点3.2 加锁工作过程3.3 锁消…

reggie优化06-项目部署

1、部署架构 2、部署环境 3、部署前端 4、部署后端 修改图片位置,并push至仓库

解决find: ‘/run/user/1000/gvfs’: 权限不够

问题描述 在用find查找对应的文件时,突然报错这个问题 解决办法 其实这个目录是空的,所以删除就好了执行下列操作: umount /run/user/1000/gvfs rm -rf /run/user/1000/gvfs 之后的查找中就没有了报错提示。

uniapp动态获取列表中每个下标的高度赋值给另一个数组(完整代码附效果图)

uniapp实现动态获取列表中每个下标的高度&#xff0c;赋值给另一个数组。 先看效果图&#xff1a; 完整代码&#xff1a; <template><div class""><div class"">我是A列表&#xff0c;我的高度不是固定的</div><div class&qu…

【MySQL】MySQL在Centos7环境下安装

目录 一、卸载不要的环境 1.1、查看是否有安装mysql 1.2、关闭运行的程序 1.3、卸载安装 二、配置yum 源 2.1、下载yum 源 2.2 安装yum源 2.3 查看是否已经生效 三、安装mysql服务 四、启动服务 五、登录方法 方法一&#xff08;不行就下一个&#xff09; 方法二&#xff08;不…

数据库应用:MySQL数据库SQL高级语句与操作

目录 一、理论 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.MySQL中6种常见的约束 二、实验 1.克隆表与清空表 2.SQL高级语句 3.SQL函数 4.SQL高级操作 5.主键表和外键表 三、总结 一、理论 1.克隆表与清空表 克隆表&#xff1a;将数据表的数据记录…

英码积极参与行业交流活动,“快、易、省”赋能更多企业具备AI能力

2023年&#xff0c;ChatGPT的火爆引发了算力需求的大爆发&#xff0c;有人说&#xff0c;边缘计算因兼具时延低与安全等优势&#xff0c;或将成为解决AI算力紧张的良方&#xff1b;在人工智能产业发展的推动下&#xff0c;边缘计算成为了众人瞩目的焦点。随着应用场景的多元化和…

redis穿透问题

1.概述 一个热点数据在高并发情况下过期时间到了&#xff0c;会导致大量流量查询redis为null&#xff0c;进而请求数据库进行更新数据&#xff0c;从流量上来说请求打到了数据库上&#xff0c;这种情况可能会造成mysql服务崩溃。 2. 解决方式之一&#xff08;加锁解决之本地锁&…