为什么没有任何记录到控制台? {}的JavaScript

时间:2013-11-13 04:08:00

标签: javascript

这是一个判断Minecraft服务器论坛版主应用程序的程序。我想知道为什么没有输出除了默认值。请帮帮我。

代码就在这里:

     var moderatorApplicant=new Object();
moderatorApplicant.active=true; //boolean;
moderatorApplicant.age=15; //number;
moderatorApplicant.applicationLength="long"; //string, "short" or "long";
console.log("Moderator Application Judge Result:");
switch(moderatorApplicant)
{
case (moderatorApplicant.active===true&&moderatorApplicant.age>=14&&moderatorApplicant.applicationLength=="long"):
    console.log("You are fit for a mod! +1");
    break;
case (moderatorApplicant.active===true&&moderatorApplicant.age<14&&moderatorApplicant.applicationLength=="long"):
    console.log("You're active! You're app is long! You aren't 14 or over though, so +0.");
    break;
case (moderatorApplicant.active===true&&moderatorApplicant.age>=14&&moderatorApplicant.applicationLength=="short"):
    console.log("App is short, but you're active, and you meet age requirements. +0");
    break;
case (moderatorApplicant.active===true&&moderatorApplicant.age<14&&moderatorApplicant.applicationLength=="short"):
    console.log("You're active, your app is short, and you are younger than 14. -1");
    break;
case (moderatorApplicant.active===false&&moderatorApplicant.age>=14&&moderatorApplicant.applicationLength=="long"):
    console.log("You are not active, but you are over 14 and have a long app. Try again when you are more active +0");
    break;
case (moderatorApplicant.active===false&&moderatorApplicant.age<14&&moderatorApplicant.applicationLength=="long"):
    console.log("You're young, you aren't active, but your app is long. -1");
    break;
case (moderatorApplicant.active===false&&moderatorApplicant.age>=14&&moderatorApplicant.applicationLength=="short"):
    console.log("You are not active. You made a short app, but you are over 14. -1");
    break;
case (moderatorApplicant.active===false&&moderatorApplicant.age<14&&moderatorApplicant.applicationLength=="short"):
    console.log("This is the definition of a bad application. Not active, younger than 14, and short app. -1.");
    break;
default:
    console.log("Check again. Inappropriate values.");
    break;
}

2 个答案:

答案 0 :(得分:3)

在JavaScript中,switch statements期望一个常量值(文字数字或字符串)。您应该使用if/else语句来在每个案例中使用表达式。

答案 1 :(得分:1)

由于MaurícioLinhares已经回答,不应该以这种方式使用switch语句。

这里是一个重构实现的例子,使用if-statements:

var moderatorApplicant= {
  active            : true,   //boolean;
  age               : 15,     //number;
  applicationLength : "long"  //string, "short" or "long";
}
console.log("Moderator Application Judge Result:");

var message;

if (moderatorApplicant.active) {
  if (moderatorApplicant.age >=14) {
    if (moderatorApplicant.applicationLength=="long") {
      message = "You are fit for a mod! +1";
    } else {
      message = "App is short, but you're active, and you meet age requirements. +0";
    }
  } else {
    if (moderatorApplicant.applicationLength=="long") {
      message = "You're active! You're app is long! You aren't 14 or over though, so +0.";
    } else {
      message = "You're active, your app is short, and you are younger than 14. -1";
    }
  }
} else {
  if (moderatorApplicant.age >=14) {
    if (moderatorApplicant.applicationLength=="long") {
      message = "You are not active, but you are over 14 and have a long app. Try again when you are more active +0";
    } else {
      message = "You are not active. You made a short app, but you are over 14. -1";
    }
  } else {
    if (moderatorApplicant.applicationLength=="long") {
      message = "You're young, you aren't active, but your app is long. -1";
    } else {
      message = "This is the definition of a bad application. Not active, younger than 14, and short app. -1.";
    }
  }
}

if (!message) message = "Check again. Inappropriate values.";
console.log(message);

这是另一个例子,使用标志代替,以及带字符串的对象。

var moderatorApplicant= {
  active            : true,   //boolean;
  age               : 15,     //number;
  applicationLength : "long"  //string, "short" or "long";
}
console.log("Moderator Application Judge Result:");

var messages = {
  'ayl' : "This is the definition of a bad application. Not active, younger than 14, and short app. -1.",
  'ayL' : "You're young, you aren't active, but your app is long. -1",
  'aYl' : "You are not active. You made a short app, but you are over 14. -1",
  'aYL' : "You are not active, but you are over 14 and have a long app. Try again when you are more active +0",
  'Ayl' : "You're active, your app is short, and you are younger than 14. -1",
  'AyL' : "You're active! You're app is long! You aren't 14 or over though, so +0.",
  'AYl' : "App is short, but you're active, and you meet age requirements. +0",
  'AYL' : "You are fit for a mod! +1"
};

var flags =
 (moderatorApplicant.active ? 'A' : 'a') +
 (moderatorApplicant.age >= 14  ? 'Y' : 'y') +
 (moderatorApplicant.applicationLength=='long' ? 'L' : 'l');

var message = messages[flags];
if (!message) message = "Check again. Inappropriate values.";
console.log(message);