JavaScript空字符串判断

本文完整示例代码GIT仓:

比较常见写法

    if (str == 'undefined' || !str || !/[^\s]/.test(str)) {
//为空
} else {
//不为空
}

这种写法缺点

  • 代码比较长,难于记住
  • 需要复制的时候要找代码,费时间

解决方案

  • 对于这种常用的代码段,我们项目上经常会把他封装成一个通用函数,放到项目工具库中,然后需要使用的时候直接调用
  • 使用第三方工具库,比如jPublic.js,GIT仓:https://github.com/smltq/jPublic

收到的反馈总结

有人可能觉得,判断一个字符串为空,直接写成这样:

a.

    if (str) {
//为空
} else {
//不为空
}

在实际生产环境中并没有什么问题,何必要如上写一段这么长的代码来判断。(PS:一些特殊数据下,真的就显示正常吗?针对这种情况,我下面会写出测试用例来判断运行结果)

其它判断空代码

网络上还有很多各种情况的空字符串判断,如下:

b.

  if (variable1 !== null || variable1 !== undefined || variable1 !== '') {
var variable2 = variable1;
}

c.

   function isEmpty(property) {
return (property === null || property === "" || typeof property === "undefined");
}

d.

function isEmpty(strIn) {
if (strIn === undefined) {
return true;
} else if (strIn == null) {
return true;
} else if (strIn == "") {
return true;
} else {
return false;
}
}

e.

String.isEmpty = function (value) {
return (!value || value == undefined || value == "" || value.length == 0);
}

等各种空字符串判断方法,这些代码多少都有些脓肿和判断不全的,了解js if(xx)自动转换的朋友都知道,任何一个值,只要它不是 undefined、null、 0、NaN或空字符串(""),那么无论是任何对象,即使是值为假的Boolean对象,在条件语句中都为真。

所以以上代码,像比如:nullstr、""str等,其实都可以直接使用if(xx)简化。

以下是我写的测试用例代码

    QUnit.test('字符串空判断:empty', function (assert) {
function empty(str) {
if (str == 'undefined' || !str || !/[^\s]/.test(str)) {
return true;
} else {
return false;
}
} var student = {className: "测试班", name: "我是张三", age: 18};
assert.ok(empty(" "), "empty空字符串判断正确");
assert.ok(empty(' '), "empty空字符串判断正确");
assert.ok(empty(student.skill), "empty空字符串判断正确");
assert.ok(empty(undefined), "empty空字符串判断正确");
assert.ok(empty(null), "empty空字符串判断正确");
assert.ok(empty(""), "empty空字符串判断正确");
assert.ok(empty(''), "empty空字符串判断正确");
}); QUnit.test('字符串空判断:empty1', function (assert) {
function empty1(str) {
if (str) {
return true;
}
return false;
} var student = {className: "测试班", name: "我是张三", age: 18};
assert.ok(empty1(" "), "empty1空字符串判断正确");
assert.ok(empty1(' '), "empty1空字符串判断正确");
assert.ok(empty1(student.skill), "empty1空字符串判断正确");
assert.ok(empty1(undefined), "empty1空字符串判断正确");
assert.ok(empty1(null), "empty1空字符串判断正确");
assert.ok(empty1(""), "empty1空字符串判断正确");
assert.ok(empty1(''), "empty1空字符串判断正确");
}); QUnit.test('字符串空判断:isNullOrEmpty', function (assert) {
var student = {className: "测试班", name: "我是张三", age: 18};
assert.ok(_.isNullOrEmpty(" "), "isNullOrEmpty 空字符串判断正确");
assert.ok(_.isNullOrEmpty(' '), "isNullOrEmpty 空字符串判断正确");
assert.ok(_.isNullOrEmpty(student.skill), "isNullOrEmpty 空字符串判断正确");
assert.ok(_.isNullOrEmpty(undefined), "isNullOrEmpty 空字符串判断正确");
assert.ok(_.isNullOrEmpty(null), "isNullOrEmpty 空字符串判断正确");
assert.ok(_.isNullOrEmpty(""), "isNullOrEmpty 空字符串判断正确");
assert.ok(_.isNullOrEmpty(''), "isNullOrEmpty 空字符串判断正确");
});

单元测试运行结果

String: 字符串空判断:empty (7)Rerun2 ms ============>>>表示7个用例都通过测试

String: 字符串空判断:empty1 (5, 2, 7)Rerun2 ms ============>>>表示7个用例有5个测试未通过

String: 字符串空判断:isNullOrEmpty (7)Rerun ============>>>表示7个用例都通过测试

运行效果图

JavaScript空字符串判断的更多相关文章

  1. 由一篇吐槽对String空字符串判断的文章所引发的碎碎念

    一.起因 最近有篇关于String空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...

  2. Javascript常用字符串判断函数

    [代码] 字符串,函数,Javascript,脚本100 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 ...

  3. javascript的字符串判断方法

    Javascript中判断符号主要有:==.!=.===.!== ==.!=这两个符号在判断之前会先对变量类型进行转换,如果类型相同会再比较值; ===.!==这是直接判断两个变量的类型,如果类型不一 ...

  4. 【转】Javascript 中的false,零值,null,undefined和空字符串对象

    js 开发中经常会碰到判断是否为空的情况,关于 null 和 undefined 的区别了解的不是很好,刚好看见这篇文章,转过来学习一下,以下是转载正文: 在Javascript中,我们经常会接触到题 ...

  5. JavaScript空假值及其判断

    一.javaScript五种空值和假值 分别为undefined,null,false,"",0,这五个值的共同点是在执行if语句时都会执行false分支,执行对应的非语句的时候都 ...

  6. Javascript 中的false、0、null、undefined和空字符串对象

    在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...

  7. Java空字符串与null的区别和判断字符串是否为空的方法

    Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...

  8. Javascript 中的false,零值,null,undefined和空字符串对象

    在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...

  9. Java知识点-判断null、空字符串和空格

    Java知识点-判断null.空字符串和空格 // 判断headerKey是否为null,空字符串或者空格 if (headerKey != null && headerKey.len ...

随机推荐

  1. zabbix 安装部署

    环境:CentOS7 机器 两台  分别为server 和 client zabbix下载网址:http://repo.zabbix.com 本次操作使用zabbix4.0 网址:http://rep ...

  2. pymysql的操作

    目录 python 操作mysql 安装pymysql 模块 sql注入问题 产生的原因 解决的方法 连接 查 增 修 删 索引 使用索引的作用 索引的本质 索引的底层原理 索引的种类 索引的创建 主 ...

  3. springcloud-eureka高可用集群搭建

    一 前言 eureka作为注册中心,其充当着服务注册与发现功能,加载负载均衡:若在项目运行中eureka挂了,那么整个服务整体都会暂停,所以为服务运行的安全性,有必要搭建eureka集群:当其中一个e ...

  4. Power BI 的数据源及数据刷新

    Power BI 目前可以连接超过100种数据源,包含常见的各种数据库,文件,数据仓库,云等等. 不同的数据源支持不同的连接方式,通常来讲,Power BI 支持两种数据连接方式: 导入(import ...

  5. 远程桌面MATLAB启动失败问题解决

    博客:博客园 | CSDN | blog 远程桌面打开MATLAB会报错,解决办法,打开matlab的licenses路径,如matlab/R2017b/licenses/,路径下存有license文 ...

  6. 在 Spring Boot 项目中使用 activiti

    新建springBoot项目时勾选activiti,或者在已建立的springBoot项目添加以下依赖: <dependency> <groupId>org.activiti& ...

  7. C# HttpClient以multipart/form-data形式 提交文件和其它参数

    调用文件接口,需要一个上传文件和一个Region参数,参考调用实例 public async Task<WebApiResult> UploadFile(UploadFileModel i ...

  8. Stm32使用串口空闲中断,基于队列来接收不定长、不定时数据

    串口持续地接收不定长.不定时的数据,把每一帧数据缓存下来且灵活地利用内存空间,下面提供一种方式供参考.原理是利用串口空闲中断和DMA,每当对方发来一帧完整的数据后,串口接收开始空闲,触发中断,在中断处 ...

  9. 安装最新版 windows正版软件地址(visio,office)

    链接地址为 https://msdn.itellyou.cn/ 进入后直接搜 然后复制链接使用迅雷下载 很快完成 但是都是原生的 需要破解 提供一个visio的破解软件 亲测有效 链接:https:/ ...

  10. js的常用场景效果

    转自https://www.cnblogs.com/tangdiao/p/9481681.html 1.checkbox的使用场景,学习之后就是购物车页面的自动计算的上手示例. 做成给checkbox ...