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

Why isn't anything logging to the console? {JavaScript}

本文关键字:控制台 JavaScript 记录 任何内 为什么      更新时间:2023-09-26

这是一个判断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;
}

在 JavaScript 中,switch 语句需要一个常量值(文字数字或字符串)。您应该使用if/else语句才能对每个事例使用表达式。

正如Maurício Linhares已经回答的那样,不应该以这种方式使用switch语句。

下面是一个重构实现的示例,使用 if 语句:

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);