我为一个项目写了一个for循环,提示用户输入一个数字并不断提示,不断添加数字。引入字符串时,循环应该停止。我用while循环完成了它,但是项目声明我们必须使用for循环来完成它。问题是,即使“a = false”,提示仍会继续运行。有人可以解释javascript的思维过程吗?我想知道为什么即使条件不满足它也会继续在循环中运行。谢谢
var addSequence2 = function() {
var total = 0;
var a;
for (; a = true; ) {
var input = prompt("Your current score is " +total+ "\n" + "Next number...");
if (!isNaN(input)) {
a = true;
total = +total + +input;
}
else if (isNaN(input)) {
a = false;
document.write("Your total is " + total);
}
}
};
答案 0 :(得分:3)
a = true
和a == true
之间存在差异。
你的for循环基本上是在问“我可以将'设置'为真吗?”,答案是肯定的,然后循环继续。
将条件更改为a == true
(因此询问“'a'的值是否为真?”
详细说明,在大多数编程语言中,我们区分赋值(“Make'x'为4”)和测试相等性(“Is'x'4?”)。按照惯例(至少在从C语言派生语法的语言中),我们使用'='来分配/设置一个值,并使用'=='来测试。
如果我正确理解规范(不保证),这里发生的是条件浓缩如下:
答案 1 :(得分:2)
尝试使用等于运算符,即更改
for(; a = true;){
到
for(; a == true;){
答案 2 :(得分:1)
您应该使用== true而不是a = true ...... =是赋值运算符
答案 3 :(得分:1)
for(; a = true;),您将值赋给变量“a”并且它将始终保持为真并且将以无限循环结束。在JavaScript中,它应 a === true 。
答案 4 :(得分:0)
我怀疑你希望你看起来像这样:
for(;a==true;)
as a = true是一个赋值,而不是一个比较。
答案 5 :(得分:0)
a == true
。双等号比较两者。 Single equal将值true
赋给a,因此总是返回true。
答案 6 :(得分:0)
for(; a = true;)< - 这是一个分配
for(; a == true;)< - 这应该更好
答案 7 :(得分:0)
这是您的固定代码:
var addSequence2 = function() {
var total = 0;
var a = true;
for(;Boolean(a);) {
var input = prompt("Your current score is " +total+ "\n" + "Next number...");
if (!isNaN(input)) {
total = total + input;
}
else{
a = false;
document.write("Your total is " + total);
}
}
};