Javascript if语句取消了while循环?

Javascript if statement cancels while loop?


我目前正在编写一些代码,我试图在其中编写一个非常弱的 KI。我已经通过带有提示和 if 语句的无休止的 while 循环来完成此操作。 但是在第一个 if 语句之后我不能再添加 ifs 了,循环将不再工作。我尝试了很多东西,但似乎没有任何效果。我希望你能帮助我...

var b = 1;
var antwort;
do {
  input = prompt(antwort);

  var eingabe = input.toLowerCase();

  var x = Math.round(Math.random() * (6 - 1)) + 1;

  if (eingabe === "hallo" || eingabe === "hi") {
    switch (x) {

      case 1:
        {
          antwort = "Hallo!";
          break;
        }

      case 2:
        {
          antwort = "Na, wie geht es dir?";
          break;
        }

      case 3:
        {
          antwort = "Guten Tag!";
          break;
        }

      case 4:
        {
          antwort = "Hi.";
          break;
        }

      case 5:
        {
          antwort = eingabe + ".";
          break;
        }
    }
  } else if (eingabe.includes("gut") === True) {
    antwort = "Das ist schön"
  } else {
    antwort = "Das habe ich nicht verstanden."
  }
} while (1 === 1);

提前致谢

您需要将布尔文字全部小写:

(eingabe.includes("gut")===True) 应该是 (eingabe.includes("gut")===true)

编辑

I you prefer (I know I do), 你实际上可以省略 === true 部分。 .includes returns 一个布尔值:

if (eingabe.includes("gut")) {
  //...
}

做同样的事情。

在此if:

if( eingabe.includes("gut") === True ) {
    // ...

True 将被视为变量名。因为 javascript 关键字都是小写的,并且 javascript 是 区分大小写的 语言。这意味着如果关键字包含大写字母,那么它就不再是关键字而是变量名。所以这会很好用:

var whiLe = 5;

console.log(whiLe); // work fine

但这不会:

var while = 5;

console.log(while); // error

这是 javascript 中所有 reserved keywords 的 link。

注意: inludes 已经返回了一个布尔值,所以没有必要将它与 true 进行比较,这就足够了:

if( eingabe.includes("gut") ) {
    // ...