如果我可以说:
var big = (x > 10) ? true : false;
而不是:
var big;
if (x > 10) {
big = true;
}
else {
big = false;
}
如何让它同样缩短?
var now = new Date
if (now.getHours() < 5) {
return "late night pick me up";
}
else if (now.getHours() < 9) {
return "breakfast";
}
else if (now.getHours() < 13) {
return "lunch";
}
else if (now.getHours() < 17) {
return "afternoon snak";
}
else {
return "dinner";
}
非常感谢!
答案 0 :(得分:9)
var now = new Date().getHours();
return now < 5 ? "late night pick me up" :
now < 9 ? "breakfast" :
now < 13 ? "lunch" :
now < 17 ? "afternoon snak" : "dinner";
答案 1 :(得分:4)
如果没有一堆凌乱的嵌套三元运算符,你就不能。三元运算符仅适用于一个衬里。
答案 2 :(得分:3)
你不能简写,特别是,我个人会这样写:
if (now.getHours() < 5) return "late night pick me up";
else if (now.getHours() < 9) return "breakfast";
else if (now.getHours() < 13) return "lunch";
else if (now.getHours() < 17) return "afternoon snak";
else return "dinner";
这不是太糟糕了吗?
答案 3 :(得分:3)
你可能不想,因为可以说它不太可读。但是,您可以简单地嵌套三元运算符,如下所示:
var now = (now.getHours() < 5) ? "late night pick me up" : ((now.getHours() < 9) ? "breakfast" : ((now.getHours() < 13) ? "lunch" : ((now.getHours() < 17) ? "afternoon snack" : "dinner")))));
我希望你能明白为什么这不是一个好主意!
这样一个更长,更复杂的条件通常需要多行和良好的块分离才能容易理解 - 虽然你可以说可以添加换行符,但标准的if-else
块最终会成为胜利者明确表达你的意图。
答案 4 :(得分:2)
首先,尝试var big = x > 10;
而不是var big = (x > 10) ? true : false;
其次,当你回来时,你不需要if-else。
//looks a little confusing, but you can move the return to line after ifs
var now = new Date
if (now.getHours() < 5) return "late night pick me up";
if (now.getHours() < 9) return "breakfast";
if (now.getHours() < 13) return "lunch";
if (now.getHours() < 17) return "afternoon snak";
return "dinner";
答案 5 :(得分:1)
看起来很混乱:
return ((now.getHours() < 5)?"late night pick me up":
((now.getHours() < 9)?"breakfast":
((now.getHours() < 13)?"lunch":
((now.getHours() < 17)?"afternoon snack":
"dinner"
)
)
)
);
你必须记住匹配括号。
答案 6 :(得分:1)
您总是可以使用switch语句:
switch(true)
{
case (now.getHours() < 5):
return "late night pick me up";
break;
case (now.getHours() < 9):
return "breakfast";
break; //etc...
default:
return "dinner";
}
答案 7 :(得分:1)
我偶然发现了这个,寻找别的东西。这里有一个使用逻辑运算符的简写技巧,滥用事实字符串文字是truthy =]
var hr = new Date().getHours();
return hr < 5 && 'late night pick me up'
|| hr < 9 && 'breakfast'
|| hr < 13 && 'lunch'
|| hr < 17 && 'afternoon snack'
|| 'dinner';
答案 8 :(得分:0)
您始终可以使用表来复制功能:
var now = new Date();
var meals = [
"late night pick me up",
"breakfast",
"lunch",
"afernoon snack",
"dinner"];
return meals[parseInt(now.getHours()-4)/4];