【问题标题】:If/Else statement nested in While loop嵌套在 While 循环中的 If/Else 语句
【发布时间】:2017-02-06 13:09:27
【问题描述】:

(我对 JavaScript 很陌生,写这篇文章是为了习惯更多地使用它——这就是为什么我使用一个对象来存储用户名和密码。我正在学习这个作为学徒,但这是我自己的时间来进一步了解我对 JS 的了解) 我尝试编写一小段代码,要求用户输入用户名,该用户名将与对象“userNames”中的属性名称进行交叉检查。然后要求用户输入该用户的密码,然后根据设置为具有正确用户名的相应属性的值的密码进行检查。 我觉得问题的一部分与我尝试使用“userNames”的变量“enteredPassword”(设置为用户输入的密码作为一种方法)有关>”。 如果 3 次尝试后用户名或密码不正确,那么我希望关闭窗口。 我的文本编辑器说 If 语句缺少一个分支,我不确定这是否会影响它是否有效。

var userNames = {Tom:"PassW0rd", Bill:"Apples40C0lander", Ryan:"M1911p4ck4ge"};
var Greeting = "Insert Username:";

var i = 0;
while (i < 3)
{
    var enteredUserName = prompt(Greeting);
    var enteredPassword = prompt("enter password for " + enteredUserName);

    if ((userNames.hasOwnProperty(enteredUserName)) && (userNames.enteredUserName==enteredPassword)) {
        alert("Welcome");
        break;
    } else {
        alert("incorrect Username or Password");
        alert("");
        window.open('', '_self', ''); window.close();
        window.open('', '_self', ''); window.close();
        i++
    }}

【问题讨论】:

  • 去掉if-statement后面的分号
  • 你没有增加 i,所以 i
  • 由于if-statement后面的semicolon,代码无法编译。分号关闭整个if,因此else 不再属于它-> 语法错误。它被解释为只有一个命令的ifs 的“短写”。语法是这样的:if (expression) command;。你看,如果你只使用一个命令,就不需要{}。没有任何其他内容的单个; 被解释为empty command,因此if (expression) ; 完成了if
  • 我在任何地方都看不到i++,所以循环是无限的。考虑使用for 循环而不是while。此外,continue(iterate) 可能应该是 break(quit)。
  • 必须是 break 语句而不是 continue 对吗?

标签: javascript if-statement while-loop


【解决方案1】:

一个简单的改变就足够了: userNames[enteredUserName].
JavaScriptObject也可以像array一样访问。
如果您使用 userNames.enteredUserName ,那么它将检查 {enteredUserName:somevalue} (即,enteredUserName 将被视为 String。但如果您将其用作 userNames[enteredUserName] ,那么 enteredUserName 将被视为变量和索引到Object
试试下面的 sn-p。

var userNames = {Tom:"PassW0rd", Bill:"Apples40C0lander", Ryan:"M1911p4ck4ge"};
var Greeting = "Insert Username:";

var i = 0;
while (i < 3)
{
    var enteredUserName = prompt(Greeting);
    var enteredPassword = prompt("enter password for " + enteredUserName);

    if ((userNames.hasOwnProperty(enteredUserName)) && (userNames[enteredUserName]==enteredPassword)) {
        alert("Welcome");
        break;
    } else {
        alert("incorrect Username or Password");
        alert("");
        window.open('', '_self', ''); window.close();
        window.open('', '_self', ''); window.close();
        i++
    }}

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2020-06-22
    • 2012-03-12
    • 2015-12-28
    • 2016-02-14
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多