【发布时间】:2020-07-28 20:41:00
【问题描述】:
我很困惑,为什么会发生这种情况,我一直在遵循教师使用的代码
<% if(error && error.length > 0) {%>
<div class="alert alert-danger" role="alert"><%= error %> </div>
<% } %>
<% if(success && success.length > 0) { %>
<div class="alert alert-success" role="alert"><%= success %> </div>
<% } %>
当我们已经在检查它们的长度时,我没有得到检查错误和成功的意义
【问题讨论】:
-
如果
success为空或未定义,则尝试将.length关闭会引发错误 -
反之亦然:在访问其
.length属性之前,您必须检查success是否“存在” -
这是为了避免运行时错误。具体来说是为了避免无法访问未定义的值“长度”的错误。所以
if (success)检查不是未定义或空(或空字符串或数字零)然后&&短路电路,也就是说,如果第一部分是假的(如果success是未定义的)那么它确实不评价第二部分。最后,一旦我们知道存在成功,我们就可以安全地评估success.length > 0 -
如果您尝试获取
undefined变量或null变量的长度,您的代码会抛出异常——这有助于您防止此异常 -
空字符串是虚假的,所以我不确定你为什么需要
.length
标签: javascript node.js ejs