文档章节

不能用array === null 来判断数组为空!!!

lybb_lbb
 lybb_lbb
发布于 2017/04/28 10:25
字数 394
阅读 41
收藏 0

js中的数据类型
字符串、数字、布尔、数组、对象、Null、Undefined
===全等比较
比较2个相同类型的对象,如果类型不同,就直接返回false,如果类型相同,那就比较具体的值或具体的引用地址

var arr=null;
if(arr===null){
    console.log('arr is null');
}
arr=undefined;
if(arr===null){
    console.log('arr is null');
}else if(arr===undefined){
    console.log('arr is undefined');
}
//arr赋值一个数组对象
arr=[];
//if(arr.length==0){
if(arr.length===0){
   console.log('arr is empty');
}

所以在判断数组是否为空时,可以使用以下代码对象在做逻辑判断的时候,如果值为null,undefined,转化boolean值 false

try{
    if(!arr||(Object.prototype.toString.call(arr)==='[object Array]'&&arr.length===0))            {
       console.log('arr is null or empty');
    }
}cathc(error){
    //处理arr未被声明的情况
}

null 和 Array 是两种不同的基本数据类型。

为什么array !== null,其实就是既然arr是数组,那么就是Array对象,表象上就是一对中括号,里面有没有值无所谓,那么[]怎么可能 === null的呢,或者换个角度,new Array() 怎样可以 === null的呢。

null代表未声明,undefined代表未定义
比如var arr = []
这里分两部分
先是var arr 此时声明变量arr
arr = [] 这时就是定义arr为数组对象
因为arr被声明过所以不可能为null

而arr被定义成空数组,虽然有定义,但原始值是""
(经过提醒,数组的原始值就是[],但在运算的时候会被强转成"")
所以如果用 arr == false的话就会返回true

© 著作权归作者所有

共有 人打赏支持
lybb_lbb
粉丝 0
博文 26
码字总数 8357
作品 0
闵行
PHP中判断变量为空的几种方法

判断变量为空,在许多场合都会用到,同时自己和许多新手一样也经常会犯一些错误, 所以自己整理了一下PHP中一些常用的、判断变量为空的方法。 1. isset功能:判断变量是否被初始化 说明:它并...

雍雍_yoyo
2013/05/06
0
0
PHP 判断变量是否为空

1. isset功能:判断变量是否被初始化 说明:它并不会判断变量是否为空,并且可以用来判断数组中元素是否被定义过 注意:当使用isset来判断数组元素是否被初始化过时,它的效率比arraykeyexi...

ufo00001
2017/07/05
0
0
PHP判断变量为空

====== PHP判断变量为空 ====== ===== isset ===== 功能: 判断变量是否被初始化。 数组中元素是否被定义过。 当使用isset来判断数组元素是否被初始化过时,它的效率比arraykeyexists高4倍左...

一点灵犀
2016/05/26
8
0
ios 中的非空判断

程序员在开发过程中经常需要判断字符串(一般为UITextField、UITextView之类和接收后台返回的json字符串)是否为空。 很多人会直接if([yourTextField.textisEqualToString:@""] || yourTextF...

无邪8
2017/12/12
0
0
JAVA实用工具类

在开发java项目时,经常都需要频繁处理数据,如果能非常合适、严谨的处理数据,那么将对程序有莫大的好处,例如,提高程序的稳定性,而且有时候数据在使用前是必须处理的,否则就会出错。例如...

dmrs
2015/10/18
22
0

没有更多内容

加载失败,请刷新页面

加载更多

精通Spring Boot——第十二篇:分页查询功能的实现

本文将介绍如何实现分页查询功能,推荐使用github的pagehelper插件实现(事实上大家基本都是这么干的),但本文的实现方式和大多数不同,废话少说,现在就带着大家看看区别在哪里。 先看pom...

developlee的潇洒人生
22分钟前
1
0
平淡的秋招之路

1. 概述 在八月中旬之前,我还没有秋招这个概念,认为找工作就是通过学校举办的招聘会。后来慢慢的了解到,由于学校实力的问题,许多好的公司只会去门当户对的学校进行招聘。我们学校只是一个...

firepation
25分钟前
1
0
设置布局中的子控件不可用

RelativeLayout R2 = findViewById(R.id.act_menu_level2_rl); //设置当前R2中的子控件不可用 int childCount = R2.getChildCount(); ......

lanyu96
36分钟前
2
0
分布式系统中处理参数配置的 4 种方案

一个系统中包含有各种各样的配置信息,如一个日志文件需要配置以下几个信息。 日志文件生成主目录 日志文件名称,不同的日志级别对应不同的文件 当前日志级别 还有其他各种业务参数、系统参数...

Java技术栈
38分钟前
2
0
MongoDB的使用学习之(七)MongoDB的聚合查询(两种方式)附项目源码

MongoDB的使用学习之(七)MongoDB的聚合查询(两种方式)附项目源码 先来张在路上…… 铛铛铛……项目源码下载地址:http://files.cnblogs.com/ontheroad_lee/MongoDBDemo.rar 此项目是用M...

Airship
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部