JavaScript空字符串判斷
阿新 • • 發佈:2019-05-13
assert pre 需要 github 用例 解決方案 hub 自動 name
JavaScript空字符串判斷
本文完整示例代碼GIT倉:
- 測試用例完整代碼:isNullOrEmpty
- jPublic GIT倉:jPublic
比較常見寫法
if (str == 'undefined' || !str || !/[^\s]/.test(str)) {
//為空
} else {
//不為空
}
這種寫法缺點
- 代碼比較長,難於記住
- 需要復制的時候需要找代碼,費時間
解決方案
- 對於這種常用的代碼段,我們項目上經常會把他封裝成一個通用函數,放到項目工具庫中,然後需要使用的時候直接調用
- 使用第三方工具庫,比如jPublic.js,GIT倉:https://github.com/smltq/jPublic
收到的反饋總結
有人可能覺得,判斷一個字符串為空,直接寫成這樣:
if (str) {
//為空
} else {
//不為空
}
這樣在實際生產環境中並沒有什麽問題,何必要如上寫一段這麽長的代碼來判斷,對於這種情況。(PS:一些特殊數據下,真的就顯示正常嗎?針對這種情況,我下面會寫出測試用例來判斷運行結果)
其它判斷空代碼
網絡上還有很多各種情況的空字符串判斷,如下:
if (variable1 !== null || variable1 !== undefined || variable1 !== '') { var variable2 = variable1; }
function isEmpty(property) {
return (property === null || property === "" || typeof property === "undefined");
}
function isEmpty(strIn) { if (strIn === undefined) { return true; } else if (strIn == null) { return true; } else if (strIn == "") { return true; } else { return false; } }
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空字符串判斷正確");
assert.ok(empty('undefined'), "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空字符串判斷正確");
assert.ok(empty1('undefined'), "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 空字符串判斷正確");
assert.ok(_.isNullOrEmpty('undefined'), "isNullOrEmpty 空字符串判斷正確");
});
單元測試運行結果
demo: 字符串空判斷:empty (8)Rerun1 ms(表示8個用例都通過測試)
demo: 字符串空判斷:empty1 (5, 3, 8)Rerun7 ms(表示8個用例有5個測試為通過)
demo: 字符串空判斷:isNullOrEmpty (8)Rerun(表示8個用例都通過測試)
運行效果圖
JavaScript空字符串判斷