0

为什么这个 return 语句为每个有效条件返回适当的字符串?&& 运算符有什么我遗漏的吗?它实际上返回“刚刚”或“1 分钟前”字符串或代码块中的任何其他字符串,我只是想知道原因是什么。

return day_diff == 0 && ( diff < 60 && "just now" ||
                          diff < 120 && "1 minute ago" ||
                  diff < 3600 && Math.floor( diff / 60 ) +  " minutes ago" ||
                  diff < 7200 && "1 hour ago" ||
                  diff < 86400 && Math.floor( diff / 3600 ) + " hours ago" ) ||
        day_diff == 1 && "Yesterday" ||
        day_diff < 7 && day_diff + " days ago" ||
        day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
4

2 回答 2

1

&&运算符返回 a 的intC 或返回 a 的 C++不同bool,JS 版本的&&不返回布尔等效值,如果左侧操作数为“真” ,则它仅返回未修改的右侧操作数。

正如评论中所指出的,如果左边的操作数是“假的”,那么该操作数将直接返回,而不是转换为任何其他类型。

于 2013-08-06T21:21:06.223 回答
0

查看JavaScript 逻辑 AND ( ) 运算符 的一些文档。如果它的第一个操作数可以转换为 true,则返回它的第二个操作数。&&&&

于 2013-08-06T21:17:53.113 回答