JavaScript空字符串判断
JavaScript空字符串判断
本⽂完整⽰例代码GIT仓:
测试⽤例完整代码:
jPublic GIT仓:
⽐较常见写法
if (str == 'undefined' || !str || !/[^\s]/.test(str)) {
//为空
} else {
//不为空
}
这种写法缺点
代码⽐较长,难于记住
需要复制的时候要代码,费时间
解决⽅案
对于这种常⽤的代码段,我们项⽬上经常会把他封装成⼀个通⽤函数,放到项⽬⼯具库中,然后需要使⽤的时候直接调⽤
使⽤第三⽅⼯具库,⽐如jPublic.js,GIT仓:
收到的反馈总结
有⼈可能觉得,判断⼀个字符串为空,直接写成这样:
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)简化。
以下是我写的测试⽤例代码
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空字符串判断正确");
});
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空字符串判断正确");
});
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个⽤例都通过测试
运⾏效果图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。