Javascript JScript确认无限循环?
然而,循环并没有结束。在过去的30分钟里,我一直在思考这个问题,但都是徒劳的尝试。有什么想法吗?你的评论不正确Javascript JScript确认无限循环?,javascript,Javascript,然而,循环并没有结束。在过去的30分钟里,我一直在思考这个问题,但都是徒劳的尝试。有什么想法吗?你的评论不正确 r=true不测试r是否为true;它将r赋值为true 您需要使用==运算符比较变量 或者您可以在(r)时编写,因为r本身已经是真的了 var setOfCats = {}; //an object while (r = true) //testing to see if r is true { var i = 0; setOfCats.i = prompt ("What's
r=true
不测试r
是否为true
;它将r
赋值为true
您需要使用==
运算符比较变量
或者您可以在(r)时编写,因为r
本身已经是真的了
var setOfCats = {}; //an object
while (r = true) //testing to see if r is true
{
var i = 0;
setOfCats.i = prompt ("What's your cat's name?", ""); //index object elements
alert ("Congratulations! Your cat has been added to the directory.");
var r = confirm ("Would you like to add another cat?"); //if r is true, then the loop should continue. if false, the loop should end.
i++
}
您正在将r
设置为true
每个循环迭代。您希望while(r==true)
,或者只希望while(r)
在每次迭代while表达式时将r的值重新赋值为true。因此,它将始终覆盖该值
您应该使用以下工具执行while测试:
while (r = true)
或者更惯用:
while(r === true)
这应该起作用:
while(r)
为清楚起见,r
和setOfCats
应设置在之外,而声明:
var setOfCats = {}; //an object
var r = true;
while(r) //testing to see if r is true
{
var i = 0;
setOfCats.i = prompt ("What's your cat's name?", ""); //index object elements
alert ("Congratulations! Your cat has been added to the directory.");
r = confirm ("Would you like to add another cat?"); //if r is true, then the loop should continue. if false, the loop should end.
i++
}
变量被提升到范围的顶部,所以我不知道这有什么关系。而r
未在声明中定义,而声明中设置了删除var
关键字将使r
成为一个全局变量–哦!伊恩,是的,我今天学到了一些东西。谢谢更改答案以反映Ingo的评论。现在脚本不运行。您可能需要在开始时将r设置为true。这就解决了它!谢谢它测试r
是否为true
(truthy,此处)…测试赋值结果(此处恰好为true
)。但它的全部意义都被破坏了,因为它在每次迭代时都将r
设置为true
var setOfCats = [];
var r = true;
while (r) {
setOfCats.push( prompt ("What's your cat's name?", "") );
alert ("Congratulations! Your cat has been added to the directory.");
r = confirm ("Would you like to add another cat?");
}