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 ?< - 不知道这意味着什么
答案 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
。如果与null
或undefined
进行比较非常重要,请改用身份运算符: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";