JavaScript 如何判断字符串是否为空? 下面本篇文章给大家介绍一下 JavaScript 空字符串判断的方法. 有一定的参考价值, 有需要的朋友可以参考一下, 希望对大家有所帮助.
JavaScript 判断字符串是否为空的方法
比较常见写法
- if (str == 'undefined' || !str || !/[^\s]/.test(str)) {
- // 为空
- } else {
- // 不为空
- }
这种写法缺点
代码比较长, 难于记住
需要复制的时候要找代码, 费时间
解决方案
对于这种常用的代码段, 我们项目上经常会把他封装成一个通用函数, 放到项目工具库中, 然后需要使用的时候直接调用
使用第三方工具库, 比如 jPublic.JS,Git 仓: https://github.com/smltq/jPublic
收到的反馈总结
有人可能觉得, 判断一个字符串为空, 直接写成这样:
- 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 对象, 在条件语句中都为真.
所以以上代码, 像比如: null==str,""==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 个用例都通过测试
运行效果图
更多 web 前端 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/javascript/17364.html