使用for循环和indexOf检查单词是否存在时出现令牌错误

时间:2018-08-17 13:57:36

标签: javascript loops indexof

我试图在用户输入任何内容时检查用户输入中是否存在单词“ @ gmail.com”,如果该单词不存在,请重复该问题,直到用户输入单词“ @ gmail.com”。 com”,但控制台中出现令牌错误,出现意外的),我刚刚开始学习循环,但想仅通过for循环和if语句尝试这种想法。

for (var userInput = prompt("enter your email"); userInput.indexOf("@gmail.com") === -1); {
    var userInput = prompt("enter your email");
    if (userInput.indexOf("@gmail.com") !== -1) {
        alert("Welcome");
    }
}

2 个答案:

答案 0 :(得分:1)

据我了解,您想做什么:

var userInput;
do {
     userInput = prompt("enter your email");
} while(userInput.indexOf("@gmail.com") === -1)
alert("Welcome");

这可能不是最好的方法。使用这样的脚本,您无需检查“ @ gmail.com”的位置,也无法停止或取消等。

答案 1 :(得分:1)

您的for循环语法是错误的。大括号中必须包含3条语句,例如:

for(var i = 0; i < 2; i++) {
  //Do something
}

循环开始时,一次执行第一条语句。 第二条语句检查是否应执行循环内的代码。 每个循环之后,第三条语句就会被执行。

因此,您的情况应该是:

//We ignore the last statement, but have to keep the semicolon!
for (var userInput = prompt("enter your email"); userInput && userInput.indexOf("@gmail.com") === -1; ) {
    userInput = prompt("enter your email");
    if (userInput && userInput.indexOf("@gmail.com") !== -1) {
        alert("Welcome");
    }
}

这将像您一样在for循环中循环,但是当然Félix Brunets答案对此更为优雅。

我希望这会有所帮助。 -思维