这是我目前的代码:
if (isStandard(statement)) {
if (isPerfect(statement)) {
alert("This is a perfect palindrome.");
} else {
alert("This is a standard palindrome.");
}
} else {
alert("The statement is not a palindrome.");
}
我希望能够将其转换为单个三元语句,其中alert()内的字符串将是返回的值。我知道如何为if-elseif-else语句执行此操作,但不知道嵌套ifs。
答案 0 :(得分:4)
如果你真的想要一个三元...
alert(
!isStandard(statement) ? "The statement is not a palindrome." :
isPerfect(statement) ? "This is a perfect palindrome." :
"This is a standard palindrome.");
请注意,在大多数情况下,代码可读性应该简洁明了。但是,只要它们具有可读性,我就不反对三元。我个人并不喜欢这个缺乏可读性。它开始进入那个" 让我思考"类别。
注意 - @nderscore询问为什么我改变了条件的顺序。我这样做纯粹是为了简化表达。否则,你开始重复调用isStandard
,或者进入这个奇怪的"树"查看条件逻辑的层次结构,如下所示:
alert(
isStandard(statement) ?
(isPerfect(statement) ?
"This is a perfect palindrome." :
"This is a standard palindrome.") :
"The statement is not a palindrome.");
我更喜欢前者...有些人可能更喜欢后者。
答案 1 :(得分:0)
var m = [" a perfect ", " a standard ", " not a "];
alert("This is"
+ (isStandard(statement)
? isPerfect(statement)
? m[0] : m[1]
: m[2])
+ "palindrone")
var m = [" a perfect ", " a standard ", " not a "];
console.log("This is" + (true ? true ? m[0] : m[1] : m[2]) + "palindrone")
答案 2 :(得分:0)
不是三元,但更具可读性。
switch(number(isStandard(statement)) + number(isPerfect(statement)))
{
case 2:
alert("This is a perfect palindrome.");
case 1:
alert("This is a standard palindrome.");
case 0:
alert("The statement is not a palindrome.");
}