【发布时间】:2014-06-21 09:49:04
【问题描述】:
编辑 代码来自: http://jsfiddle.net/sWbfk/
我有这个我不明白的 javascript 代码..
是这样的:
return [true, date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""];
我试图将它“翻译”成我可以阅读的内容,但我失败了。任何帮助都非常感谢!
试过了:
if ( date1 && ( (date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2) ) ) {
return "dp-highlight";
} else {
return "";
}
【问题讨论】:
-
我认为开放括号应该在
date1 &&之前 -
它返回一个两个元素的数组,你返回一个字符串。
-
顺便提一下,
date.getTime() == date1.getTime()可以是date == date1。 -
@thefourtheye——添加一组额外的括号没有任何区别。表达式本质上是
date1 && ( /*other stuff*/ )? trueResult : falseResult;。大概 date1 可能是NaN或undefined,在这种情况下它会直接跳到错误的结果。 -
@RobG 事实上,如果
date1是假的,它将返回"",但如果开放括号在date1 &&之前,它提供了date2验证的机会。
标签: javascript shortcuts