For loop 对于循环赢得';结束。Don';我不知道为什么

For loop 对于循环赢得';结束。Don';我不知道为什么,for-loop,infinite-loop,For Loop,Infinite Loop,我正在为一个项目编写一个for循环,它提示用户输入一个数字,并不断地进行提示,不断地将数字相加。当引入字符串时,循环应该停止。我已经用while循环完成了,但是项目声明我们也必须用for循环完成。问题是,即使在“a=false”时,提示仍会继续运行。有人能解释一下javascript的思维过程吗?我想了解为什么即使不满足条件,它仍会在循环中运行。多谢各位 var addSequence2 = function() { var total = 0; var a;

我正在为一个项目编写一个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);
            }
        }
 };

尝试使用等于运算符,即更改

对于(;a=true;){


对于(;a==true;){

尝试使用等于运算符,即change

对于(;a=true;){


for(;a==true;){

我怀疑您希望您的for看起来像这样:

for(;a==true;)

as a=true是一个赋值,而不是一个比较。

我怀疑您希望您的for看起来像这样:

for(;a==true;)

因为a=true是赋值,而不是比较。

a==true
。双等号比较两者。单等号将值
true
赋值给a,因此总是返回true。

a==true
。双等号比较两者。单等号将值
true
赋值给a,因此始终返回正确。

对于(;a=true;)对于(;a=true;)在
a=true
a==true
之间存在差异

for循环基本上是问“我可以将'a'设置为true吗?”,答案是肯定的,循环继续

将条件更改为
a==true
(从而询问“a”的值是否为true?”)


为了详细说明,在大多数编程语言中,我们区分赋值(“使‘x’为4”)和相等测试(“是‘x’4?”)。按照惯例(至少在从C派生语法的语言中),我们使用“=”来赋值/设置值,使用“==”来测试

如果我正确理解规范(不保证),这里发生的情况是,条件浓缩如下:

  • (a=true)是真的吗
  • 完成括号:将a设置为true
  • (a)是真的吗?(我们刚刚将其设置为真,所以它必须是!)

  • a=true
    a==true
    之间存在差异

    for循环基本上是问“我可以将'a'设置为true吗?”,答案是肯定的,循环继续

    将条件更改为
    a==true
    (从而询问“a”的值是否为true?”)


    为了详细说明,在大多数编程语言中,我们区分赋值(“使‘x’为4”)和相等测试(“是‘x’4?”)。按照惯例(至少在从C派生语法的语言中),我们使用“=”来赋值/设置值,使用“==”来测试

    如果我正确理解规范(不保证),这里发生的情况是,条件浓缩如下:

  • (a=true)是真的吗
  • 完成括号:将a设置为true
  • (a)是真的吗?(我们刚刚将其设置为真,所以它必须是!)

  • 您应该使用a==true而不是a=true……=是赋值运算符

    您应该使用a==true而不是a=true……=是赋值运算符

    对于(;a=true;),您正在将值赋值给变量“a”在JavaScript中,它应该a===true

    对于(;a=true;),您正在将值分配给变量“a”,它将始终保持为true,并将在无限循环中结束。在JavaScript中,它应该a===true这是您的固定代码:

    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);
            }
        }
    };
    

    这是您的固定代码:

    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);
            }
        }
    };
    

    谢谢@KindeyChris和其他回复的人。我现在明白了。我感谢你们所有人花时间帮助我:)谢谢@KindeyChris和其他回复的人。我现在明白了。我感谢你们所有人花时间帮助我:)是的,一段时间的循环似乎更适合这个任务。但是任务要求我们使用一个厕所p来练习使用它们,显然,我需要练习!呵呵。谢谢你的帮助:)是的,一个while循环似乎更适合这个任务。但是作业要求我们使用for循环来练习使用它们,显然,我需要练习!呵呵。谢谢你的帮助:)