【发布时间】: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