JavaScript空字符串判断
JavaScript空字符串判断
本文完整示例代码GIT仓:
- 测试用例完整代码:isNullOrEmpty
- jPublic GIT仓:jPublic
比较常见写法
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空字符串判断的更多相关文章
- 由一篇吐槽对String空字符串判断的文章所引发的碎碎念
一.起因 最近有篇关于String空字符串判断的文章火了,老是看到这篇文章,既然如此我也只好认真看了下:程序员晒出一段代码引来无数网友狂喷!网友:你就活该当码农! 我也觉得这段代码写的不怎么的,首先程 ...
- 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 ...
- javascript的字符串判断方法
Javascript中判断符号主要有:==.!=.===.!== ==.!=这两个符号在判断之前会先对变量类型进行转换,如果类型相同会再比较值; ===.!==这是直接判断两个变量的类型,如果类型不一 ...
- 【转】Javascript 中的false,零值,null,undefined和空字符串对象
js 开发中经常会碰到判断是否为空的情况,关于 null 和 undefined 的区别了解的不是很好,刚好看见这篇文章,转过来学习一下,以下是转载正文: 在Javascript中,我们经常会接触到题 ...
- JavaScript空假值及其判断
一.javaScript五种空值和假值 分别为undefined,null,false,"",0,这五个值的共同点是在执行if语句时都会执行false分支,执行对应的非语句的时候都 ...
- Javascript 中的false、0、null、undefined和空字符串对象
在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象——false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...
- Java空字符串与null的区别和判断字符串是否为空的方法
Java空字符串与null的区别: 1.类型null表示的是一个对象的值,而并不是一个字符串.例如声明一个对象的引用,String a = null ;""表示的是一个空字符串,也 ...
- Javascript 中的false,零值,null,undefined和空字符串对象
在Javascript中,我们经常会接触到题目中提到的这5个比较特别的对象--false.0.空字符串.null和undefined.这几个对象很容易用错,因此在使用时必须得小心. 类型检测 我们下来 ...
- Java知识点-判断null、空字符串和空格
Java知识点-判断null.空字符串和空格 // 判断headerKey是否为null,空字符串或者空格 if (headerKey != null && headerKey.len ...
随机推荐
- Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置
说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 <plugin> <groupId>com.spot ...
- Python中最简单快捷的输出方式
格式化输出最简单的方式之哑巴填充公式 name=ludundun age=25 print(f'hello {name},your age is {age}') 输出内容: hello ludundu ...
- django生命周期请求l流程图
django思维导图链接:https://www.processon.com/view/link/5dddb0f8e4b074c442e5c68c
- 安卓JNI精细化讲解,让你彻底了解JNI(二):用法解析
目录 用法解析 ├── 1.JNI函数 │ ├── 1.1.extern "C" │ ├── 1.2.JNIEXPORT.JNICALL │ ├── 1.3.函数名 │ ├── 1 ...
- Csharp: TreeList Drag and Drop
/// <summary> /// https://www.codeproject.com/articles/3225/treelistview /// https://www.codep ...
- MSSQL - 最佳实践 - 使用SSL加密连接
MSSQL - 最佳实践 - 使用SSL加密连接 author: 风移 摘要 在SQL Server安全系列专题月报分享中,往期我们已经陆续分享了:如何使用对称密钥实现SQL Server列加密技术. ...
- JavaScript图形实例:四瓣花型图案
设有坐标计算公式如下: X=L*(1+SIN(4α))*COS(α) Y=L*(1+SIN(4α))*SIN(α) 用循环依次取α值为0~2π,计算出X和Y,在canvas画布中对坐标位置(X,Y)描 ...
- .Net Core WebApi 模型验证无效时报400
问题 模型验证无效时,没有进入到接口里,而是直接报400 Bad Request,非常不友好. 环境 SDK:.Net Core 2.2.401 开发工具:VS2017 step 1 创建接口 /// ...
- 【译】gRPC vs HTTP APIs
本文翻译自 ASP.NET Blog | gRPC vs HTTP APIs,作者 James,译者 Edison Zhou. 写在开头 现在,ASP.NET Core使开发人员可以构建gRPC服务. ...
- 记一个AbstractMethodError
如下,引入FastJsonHttpMessageConverter 之后,导致了新的错误: @Override public void configureMessageConverters( List ...