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. LINUX网络传输的序列化和反序列化C++

    来到公司实习,开始面向实习生有一个小项目,当然了,服务器就由我一个人来写了,1.0主要完成的使用纯C 写Linux下UDP的服务器框架,大部分还都是以前在学校做过的项目套用的,难度不大,经过跟大bos ...

  2. Yii2 框架跑脚本时内存泄漏问题分析

    现象 在跑 edu_ocr_img 表的归档时,每跑几万个数据,都会报一次内存耗尽 PHP Fatal error:  Allowed memory size of 134217728 bytesex ...

  3. 松软科技Web课堂:JavaScript JSON

    JSON 是存储和传输数据的格式. JSON 经常在数据从服务器发送到网页时使用. 什么是 JSON? JSON 指的是 JavaScript Object Notation JSON 是轻量级的数据 ...

  4. JS---DOM---事件冒泡和阻止事件冒泡,总结事件

    事件冒泡: 多个元素嵌套, 有层次关系 ,这些元素都注册了相同的事件, 如果里面的元素的事件触发了, 外面的元素的该事件自动的触发了     事件有三个阶段: 1.事件捕获阶段  :从外向内 2.事件 ...

  5. 相机位姿求解——P3P问题

    1.位姿求解是计算机视觉中经常遇到的,Perspective-n-Points, PnP(P3P)提供了一种解决方案,它是一种由3D-2D的位姿求解方式,即需要已知匹配的3D点和图像2D点.目前遇到的 ...

  6. 面试连环炮系列(十):一个线程调用两次start会怎么样

    一个线程调用两次start会怎么样 Java的线程是不允许启动两次的,第二次调用必然会抛出IllegalThreadStateException,这是一种运行时异常. 谈谈线程的生命周期和状态转移 新 ...

  7. React的世界观及与Vue之比较

    写在前面:本文谈论的是主观的个人感受,不追求立场的“客观.公正”,因此我下面所说的很可能是错的,欢迎交流指正. 我学习前端时,跟大部分beginner一样,学的第一个框架是Vue,入职后也一直写Vue ...

  8. LINUX OS EXERCISE 08

    1 配置crontab计划任务时,记录的格式是什么? 分钟 小时 日期 月份 星期 可执行语句 2 配置crontab计划任务实例. 以root用户身份添加计划任务,每天早上7:30启动sshd服务, ...

  9. [Codeforces 1244C] The Football Season

    思维加枚举 题意 :足球赛,赢平所得到的分数分别为w和d,w>d,分别求赢平输的场数,输出一组即可,即x+y+z=n 且 xw+yd=p的一组解. 可以扩展公约数做,但由于注意到d和w<1 ...

  10. python高阶函数——map/reduce

    python 内置了map()和reduce()函数 1.map()函数 map()函数接收两个参数,一个是函数,一个是可迭代对象Iterable,map将传入的函数依次作用于序列的每一个元素.并把结 ...