js中null,undefined,false,0,'',[],{}判断方法
目录
1.数据类型
2.JSON字符串
3.数字类型
4.非的布尔值
5.与非比较
一、单独判断
1.null
2.undefined
3.0
4.“”
5.判断undefined、null与NaN:
因为获取到数据的不确定性,常常会导致一些异常情况,使得页面报错,往往要兼容这些异常数据,那么前端的包容性就很重要了。所以这里我对一些异常的数据进行了整理。
const datas = [undefined,null,0,'',false,[],{}]
let param1 = '类型'
let param2 = 'JSON字符串'
let param3 = '转为数字类型'
let param4 = '非'
let param5 = '与非比较'
console.log(datas) // [undefined, null, 0, "", false, Array(0), {…}]
_.map(datas || [], data=>{param1+=`${typeof (data)},`param2+=`${JSON.stringify(data)},`param3+=`${Number(data)},`param4+=`${!data},`param5+=`${data==!data},`
})
console.log(param1) // 类型 undefined,object,number,string,boolean,object,object,
console.log(param2) // JSON字符串undefined,null,0,"",false,[],{},
console.log(param3) // 转为数字类型NaN,0,0,0,0,0,NaN,
console.log(param4) // 非true,true,true,true,true,false,false,
console.log(param5) // 与非比较false,false,false,false,false,true,false,
1.数据类型
- 数据的类型包括原始类型(基本类型)和引用类型。
- 原始类型(基本类型)包括字符串、数字、布尔、Null、Undefined,按值访问,可以操作保存在变量中实际的值。原始类型汇总中null和undefined比较特殊。
- 引用类型包括数组、对象,引用类型的值是保存在内存中的对象。
- 比较特殊的是typeof null返回“object”。
历史原因,规范尝试修改typeof null返回“null”修改完大量网站无法访问,为了兼容,或者说历史原因返回"object"。
typeof对基本类型和函数对象很方便,但是其他类型就没办法了。
判断一个对象是不是数组?用typeof返回“object”。对对象的判断常用instanceof。
2.JSON字符串
这里返回的每一个JSON字符串都是它本身的JSON字符,唯一的,单独判断的时候,我经常采用这种方法。
3.数字类型
这里undefined和空对象{}是NAN,而空数组为0。
- 但是,将空数组与true进行比较时,结果是false。因为,任意值与布尔值进行比较的时候都会转换为数值进行比较(我一直以为所有的比较都会转化为简单的类型比较,这里比较特殊?),布尔值true为1, false为0,空数组转换为数字的话是0,所以二者并不相等。
- 如果将两个数组进行比较, 返回值是false, 因为二者是不同的两个对象。
- new Array(1)同样因为虽然长度为1,但值为undefined,转换为数字仍未0。
console.log(a == true) // false
console.log([] == []) // false
console.log(new Array(1) == false)) // true
4.非的布尔值
引用类型转换了Boolean均为true,所以空数组和空对象进行布尔转换时均转换为true。
5.与非比较
对于空数组[]而言,等式右边的空数组被转换为了一个布尔值,空数组是true,取反是false;数组左边与布尔值进行比较(任意值与布尔值进行比较的时候都会转换为数值进行比较),需要将二者都转换为数数字,左侧空数组转换为0, 右侧相当于false转换为数字,也是0, 所以二者相等。但是如果是全等比较则不相等,因为不会发生类型转换。
一、单独判断
1.null
和数字运算时,10 + null结果为:10;10 + undefined结果为:NaN。
let a =null
JSON.stringify(a)=='null' // true
关系运算符 和 相等运算符 并不是一个类别的.
关系运算符,在设计上总是需要运算元尝试转为一个number,而相等运算符在设计上,则没有这方面的考虑.
null > 0 // null 尝试转型为number , 则为0 . 所以结果为 false,
null >= 0 // null 尝试转为number ,则为0 , 结果为 true.
null == 0 // null在设计上,在此处不尝试转型. 所以 结果为false.
2.undefined
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。
null是一个表示"无"的对象,转为数值时为0;undefined是一个表示"无"的原始值,转为数值时为NaN。
3.0
0与一些虚值的比较:
console.log(0 == ''); //true
console.log(0 == false); //true
console.log(0==[]); //true
console.log(0==NaN);//false
console.log(0==undefined);//false
console.log(0==null);//false
console.log(0=={});//false console.log(null == undefined); //true
console.log(false == null); //false
console.log(false == undefined);//false
4.“”
“”与一些虚值的比较:
console.log('' == false); //true
console.log(''==[]);//true
console.log(''==undefined);//false
console.log(''==null);//false
console.log(''==NAN);//false
console.log(''=={});//false
5.判断undefined、null与NaN:
var tmp = null;
if (!tmp)
{ alert("null or undefined or NaN");
}
提示:一般不那么区分就使用这个足够。
---------------------
作者:weixin_33814685
来源:CSDN
原文:https://blog.csdn.net/weixin_33814685/article/details/87515835
版权声明:本文为作者原创文章,转载请附上博文链接!
js中null,undefined,false,0,'',[],{}判断方法相关推荐
- JS中true和false的判断
简介 学习和使用js的时候对于true和false的判断总是非常纠结,接下来做一个总结.JS中属于弱类型语言,这在一定程度上提供了方便,同时也为理解加大了阻碍,其中"=="和&qu ...
- js 中null,undefined区别
首先摘自阮一峰先生的文章: 大多数计算机语言,有且仅有一个表示"无"的值,比如,C语言的NULL,Java语言的null,Python语言的None,Ruby语言的nil. 有点奇 ...
- js中True、False如何判断
主要总结下js判断0,1,-1,先看结果 js数字型和布尔型比,会把布尔型转化数字型,true为1,false为0: 那为啥-1也是true呢? js规定所有的正负整数都是true,只有0是false ...
- js 中 true == 1 false == 0
在es5中,处理true == 1 和 false == 0 的判断流程是这样的: 如果比较的两者中有boolean,会把 boolean 先转换为对应的 number,即 0 和 1(false是0 ...
- 详解js中的undefined、NaN、null
js中三大特殊的值: undefined NaN null 1.undefined 变量声明了但为赋值 console.log(typeof undefined); //undefined conso ...
- js中null和undefined
Undefined类型只有一个值,即undefined.当声明的变量未被初始化时,变量的默认值为undefined. Null类型也只有一个值,即null.null用来表示空对象指针.null 与对象 ...
- js中null和undefined区别
null是空对象引用,引用指向为空 undefined是只定义了引用 typeof null:"object" typeof undefined : "undefined ...
- js中firstChild和childNodes[0]以及children[0]之间的点滴问题
示例: <!DOCTYPE html> <html><head><meta charset="utf-8"><title> ...
- python条件判断true_Python中的True,False条件判断实例分析
本文实例讲述了Python中的True,False条件判断用法.分享给大家供大家参考.具体分析如下: 对于有编程经验的程序员们都知道条件语句的写法: 以C++为例: 代码如下: if (conditi ...
最新文章
- pyqt控件显示重叠_Python编程:一个不错的基于PyQt的Led控件显示库,建议收藏学习...
- 第十二节:深究内核模式锁的使用场景(自动事件锁、手动事件锁、信号量、互斥锁、读写锁、动态锁)
- 织梦数据库支持mysql5.7_最新织梦DEDECMS5.7数据库说明文档
- Sqoop export(Hive to MySQL) 的一些 reference
- 5G( 9)---开发者:你如何迎接5G时代的到来?
- [Web Chart系列之七] 物理动画效果(如撕扯效果)
- shell编程中if []的用法注意
- Python Selenium 浏览器点击操作
- .net mvc 一个Action的 HttpGet 和 HttpPost
- 论文笔记_S2D.01-2018-ICRA_Sparse-to-Dense:从稀疏深度样本+单一图像的深度预测
- 计算机c盘中哪些东西能删除吗,C盘哪些文件可以删除
- Object 转int
- 利用R语言进行探索性数据分析(EDA)
- ios开发者联系方式
- android studio jni.h 红色报错
- 泛微文书定确保电子档案移交接收过程:真实、完整、可用和安全
- ES6 - lterator
- html table文字竖,表格里的文字怎么竖排
- java毕业设计——基于java+Eclipse+jsp的网上手机销售系统设计与实现(毕业论文+程序源码)——网上手机销售系统
- 有理数加法(C语言)