江河群山傲天下 發表於 2019-5-13 19:18:00

JavaScript空字符串判断

<h1 id="javascript空字符串判断">JavaScript空字符串判断</h1>
<p>本文完整示例代码GIT仓:</p>
<ul>
<li>测试用例完整代码:isNullOrEmpty</li>
<li>jPublic GIT仓:jPublic</li>
</ul>
<h2 id="比较常见写法">比较常见写法</h2>
<pre><code class="language-js">    if (str == 'undefined' || !str || !/[^\s]/.test(str)) {
      //为空
    } else {
      //不为空
    }
</code></pre>
<h3 id="这种写法缺点">这种写法缺点</h3>
<ul>
<li>代码比较长,难于记住</li>
<li>需要复制的时候要找代码,费时间</li>
</ul>
<h3 id="解决方案">解决方案</h3>
<ul>
<li>对于这种常用的代码段,我们项目上经常会把他封装成一个通用函数,放到项目工具库中,然后需要使用的时候直接调用</li>
<li>使用第三方工具库,比如jPublic.js,GIT仓:https://github.com/smltq/jPublic</li>
</ul>
<h2 id="收到的反馈总结">收到的反馈总结</h2>
<p>有人可能觉得,判断一个字符串为空,直接写成这样:</p>
<p>a.</p>
<pre><code class="language-js">    if (str) {
      //为空
    } else {
      //不为空
    }
</code></pre>
<p>在实际生产环境中并没有什么问题,何必要如上写一段这么长的代码来判断。(PS:一些特殊数据下,真的就显示正常吗?针对这种情况,我下面会写出测试用例来判断运行结果)</p>
<h3 id="其它判断空代码">其它判断空代码</h3>
<p>网络上还有很多各种情况的空字符串判断,如下:</p>
<p>b.</p>
<pre><code class="language-js">if (variable1 !== null || variable1 !== undefined || variable1 !== '') {
    var variable2 = variable1;
}
</code></pre>
<p>c.</p>
<pre><code class="language-js">   function isEmpty(property) {
      return (property === null || property === "" || typeof property === "undefined");
   }
</code></pre>
<p>d.</p>
<pre><code class="language-js">function isEmpty(strIn) {
    if (strIn === undefined) {
      return true;
    } else if (strIn == null) {
      return true;
    } else if (strIn == "") {
      return true;
    } else {
      return false;
    }
}
</code></pre>
<p>e.</p>
<pre><code class="language-js">String.isEmpty = function (value) {
    return (!value || value == undefined || value == "" || value.length == 0);
}
</code></pre>
<p>等各种空字符串判断方法,这些代码多少都有些脓肿和判断不全的,了解js if(xx)自动转换的朋友都知道,任何一个值,只要它不是 undefined、null、 0、NaN或空字符串(""),那么无论是任何对象,即使是值为假的Boolean对象,在条件语句中都为真。<br>
所以以上代码,像比如:null<mark>str、""</mark>str等,其实都可以直接使用if(xx)简化。</p>
<h2 id="以下是我写的测试用例代码">以下是我写的测试用例代码</h2>
<pre><code class="language-js">    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 空字符串判断正确");
    });
</code></pre>
<h3 id="单元测试运行结果">单元测试运行结果</h3>
<p>String: 字符串空判断:empty (7)Rerun2 ms         ============&gt;&gt;&gt;表示7个用例都通过测试<br>
String: 字符串空判断:empty1 (5, 2, 7)Rerun2 ms    ============&gt;&gt;&gt;表示7个用例有5个测试未通过<br>
String: 字符串空判断:isNullOrEmpty (7)Rerun       ============&gt;&gt;&gt;表示7个用例都通过测试</p>
<h3 id="运行效果图">运行效果图</h3>
<p><img src="https://img2018.cnblogs.com/blog/75999/201905/75999-20190513191538467-1138767292.png" alt="运行效果" loading="lazy"></p><br><br>
来源:https://www.cnblogs.com/tqlin/p/10858492.html
頁: [1]
查看完整版本: JavaScript空字符串判断