-3

是声明:

  if(attachmentId!=null && attachmentId.length>0&& attachmentId !='undefined'){
   //do something
   }

相当于:

 if (attchmentId) {
     //do something
  } 

谢谢您的帮助

4

3 回答 3

4

写作 :

if (attchmentId)

相当于:

if(
   attchmentId != undefined &&//NO QUOTE
   attchmentId != '' &&
   attchmentId != null &&
   attchmentId != false &&
   attchmentId != 0
)
于 2013-07-30T18:07:43.253 回答
0

它们不等价,但第三次测试attachmentId !='undefined'可能是一个错误(你想要attachmentId !=undefined吗?)。

另一个不同的例子是0没有通过第一个测试但通过了第二个测试。

在尝试编写测试之前,您必须决定什么对您很重要。如果你知道你从一个字符串开始并且你想测试它是否被定义并且不是空的,那么你可以使用第二个测试。

于 2013-07-30T18:04:15.170 回答
0

可以简化为:

if (attachmentId && attachmentId.length > 0) {
   //do something
}

这适用于恰好具有length属性的数组和更复杂的对象。如果 attachmentId 应该是一个字符串,上面的代码也一样,但第二部分基本上是一个 noop,所以你可以使用:

if (attachmentId) {
   //do something
}

我假设与的比较'undefined'是一个错误 - 这样做并且你没有检查某些东西是否真的是undefined. 您正在检查它与“未定义”的文字字符串不同。

由于短路规则,您还要先检查变量。无论null是否定义,您都不关心其余部分。否则,如果您在检查长度之前尝试评估长度,undefined否则null您可能会在那里抛出错误。

于 2013-07-30T18:06:36.360 回答