【问题标题】:javascript "translate" these shortcutsjavascript“翻译”这些快捷方式
【发布时间】: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 &amp;&amp;之前
  • 它返回一个两个元素的数组,你返回一个字符串。
  • 顺便提一下,date.getTime() == date1.getTime() 可以是date == date1
  • @thefourtheye——添加一组额外的括号没有任何区别。表达式本质上是date1 &amp;&amp; ( /*other stuff*/ )? trueResult : falseResult;。大概 date1 可能是NaNundefined,在这种情况下它会直接跳到错误的结果。
  • @RobG 事实上,如果date1 是假的,它将返回"",但如果开放括号在date1 &amp;&amp; 之前,它提供了date2 验证的机会。

标签: javascript shortcuts


【解决方案1】:

以下是它的重写方式:

return [
    true,
    date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2)) ? "dp-highlight" : ""
];

甚至:

var array = [true];

if (date1 && ((date.getTime() == date1.getTime()) || (date2 && date >= date1 && date <= date2))) {
    array.push("dp-highlight");
} else {
    array.push("");
}

return array;

【讨论】:

  • 啊哈.. 非常感谢 sp00m!
【解决方案2】:

它返回一个包含两个值的数组

我想你的意思是这样的:

if (date1 && (date.getTime() == date1.getTime() || (date2 && date >= date1 && date <= date2))) {
  return [true, "dp-highlight"];
} else {
  return [true, ""];
}

【讨论】:

    【解决方案3】:

    我认为这样编写的代码有助于理解实际比较的内容。

    var arr = [true];
    var isEqualTime = date.getTime() == date1.getTime();
    var x = date2 && date; // if both dates are defined take date
    var y = date1 && date; // if both dates are defined take date
    var boolValue = isEqualTime || (x >= y <= date2);
    var z = date1 && boolValue; // set z true, false or undefined.
    
    if(z){
        arr.push("dp-highlight");
    }else{
        arr.push("");
    }
    

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-19
      • 2013-08-20
      相关资源
      最近更新 更多