声明:
if(attachmentId!=null && attachmentId.length>0&& attachmentId !='undefined'){
//do something
}
相当于:
if (attchmentId) {
//do something
}
感谢您的帮助
答案 0 :(得分:4)
写作:
if (attchmentId)
相当于:
if(
attchmentId != undefined &&//NO QUOTE
attchmentId != '' &&
attchmentId != null &&
attchmentId != false &&
attchmentId != 0
)
答案 1 :(得分:0)
它们不等同,但第三次测试attachmentId !='undefined'
可能是错误的(您想要attachmentId !=undefined
吗?)。
另一个不同的例子是0
没有通过第一次测试而是通过第二次测试。
在您尝试编写测试之前,您必须决定对您来说重要的事情。如果你知道你开始使用一个字符串,并且你想测试它是否被定义而不是空,那么你可以使用第二个测试。
答案 2 :(得分:0)
可以简化为:
if (attachmentId && attachmentId.length > 0) {
//do something
}
这将适用于恰好具有length
属性的数组和更复杂的对象。如果attachmentId应该是一个字符串,上面的代码将是相同的,但第二部分基本上是一个noop,所以你可以选择:
if (attachmentId) {
//do something
}
我假设与'undefined'
的比较是一个错误 - 这样做,你不会检查某些事情是否真的undefined
。您正在检查它与文字字符串“undefined”不同。
此外,由于short circuit rule,您首先检查变量。它是null
或未定义你不关心其余的。否则,如果您在检查长度是否为undefined
或null
之前尝试评估长度,则可能会在那里引发错误。