javascript undefined not null,不是空问题

时间:2013-07-30 18:02:32

标签: javascript jquery

声明:

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

相当于:

 if (attchmentId) {
     //do something
  } 

感谢您的帮助

3 个答案:

答案 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或未定义你不关心其余的。否则,如果您在检查长度是否为undefinednull之前尝试评估长度,则可能会在那里引发错误。