为什么这个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";
答案 0 :(得分:1)
与&&
运算符返回int
或C ++返回bool
的C不同,&&
的JS版本不返回布尔值等效值,如果左手操作数为“truthy”,它只返回右手操作数未修改。
正如评论中所指出的,如果左手操作数为“falsy”,则该操作数将直接返回,而不会转换为任何其他类型。
答案 1 :(得分:0)
查看JavaScript逻辑AND(&&
)运算符的某些documentation。如果第一个操作数可以转换为true,则&&
返回第二个操作数。