试图从switch语句中的函数返回一个值-JS-

时间:2016-03-21 10:41:40

标签: javascript if-statement switch-statement

我试图制作可以回答我添加到其中的一些问题的切换语句。 我希望答案以用户的名字结束,所以如果你输入了提示符,那么我的名字就是Alex"它会将Alex保存在" var用户名中;" 我想要"用户名"甚至在定义" sendUserName"之前就具有该值;功能

Positive

1 个答案:

答案 0 :(得分:1)

在您的代码中,在您通过if-else语句和开关之前调用第一个write(userName)。解决方法(在我看来也会改进结构)是定义一个新函数processor(input)并将所有逻辑放在那里,然后在调用write()之前用用户输入作为参数调用该函数。请参阅以下代码:

var ask = prompt("Ask me anything >>").toLowerCase();

function write(x) { document.write(x) };
//Capitalize the first letter func :
function capitalize(string) {
  return string.charAt(0).toUpperCase() + string.slice(1);
}
//..............

var input = ask.split(" ");
var date = new Date;
var userName;
//...............................
processor(question); // the processor function is called with the value of variable question

write(userName); // <------ Now it is defined even here

function processor(input) {
  if (input[0] === "what") {

  switch (input[1]) {
    case "time":
      switch (input[2]) {
        case "is":
          switch (input[3]) {
            case "it":
              write(date);
              break;
            default:
          };
          break;
        default:
      };
      break;
    case "is":
      switch (input[2]) {
        case "your":
          switch (input[3]) {
            case "name":
              write("Alex !");
              break;
            default:
          };
          break;
        default:

      };
      break;

    default:
      write("unknown");

  };

} else if (input[0] === "my") {

  switch (input[1]) {
    case "name":
      switch (input[2]) {
        case "is":

          userName = capitalize(input[3]);;
          alert("Your name is saved, " + userName);
          break;

        default:
      };
      break;



    default:
  };
};
}

function sendUserName() {
  return userName;
}

sendUserName();

我还没有触及你的代码。我只是将所有逻辑转储到函数processor(input)中,并从函数sendUserName()中取出它,使其成为全局函数。当然,如果你愿意,你可以把它放回去,但是要注意,如果你没有达到定义该函数的逻辑部分,你可能会通过调用函数来发现错误。