请求帮助以阅读JS系列

时间:2012-02-13 17:32:30

标签: javascript

有人可以告诉我是什么意思吗?是指在js下面?我没有对JS代码进行换行,因为我不想无意中改变其含义......

errMess = t.origStatus != undefined && t.status != t.origStatus && t.statuseffective == null ? errMess + t.systemname + ": Status effective date invalid.\n" : errMess;

我读到这个:
errMess =
t.original status不等于undefined AND t.status不等于原始状态和
statuseffective equals null < - 不知道这意味着什么

4 个答案:

答案 0 :(得分:3)

有问题的结构是ternary operator

代码也可以写成:

if (t.origStatus != undefined
     && t.status != t.origStatus
     && t.statuseffective == null) {
    errMess = errMess + t.systemname + ": Status effective date invalid.\n";
} else {
    errMess = errMess;
}

因此,X = A ? B : C相当于:

if (A) {
    X = B;
} else {
    X = C;
}

附加说明:

  • t.origStatus != undefined相当于t.origStatus != null,因为在相等比较中,null等于undefined。如果与nullundefined进行比较非常重要,请改用身份运算符:t.origStatus === undefined

答案 1 :(得分:2)

这是If-THEN-ELSE的简写符号,如下所示:

  x ? A : B

表示“如果x为真,则为A,否则为B”。这里解释得很好:http://sanzon.wordpress.com/2008/02/05/the-question-mark-in-javascript/

答案 2 :(得分:1)

这是if子句的简写版本。有关详细信息,请查看MDN conditional operator。 在完整长度中,您的代码将如下所示:

if ( t.origStatus != undefined && t.status != t.origStatus && t.statuseffective == null ) {
  errMess = errMess + t.systemname + ": Status effective date invalid.\n";
} else {
  errMess = errMess;
}

答案 3 :(得分:0)

  if (t.origStatus != undefined && t.status != t.origStatus && t.statuseffective == null)
      errMess =  errMess + t.systemname + ": Status effective date invalid.\n";