javascript中奇怪的循环行为

时间:2018-04-06 18:41:51

标签: javascript arrays

这是非常基本的,我确信,但我很困惑。

如果我在浏览器中调用以下函数:

function bar(){
    var userInput=prompt("Enter a number between 1 and 20");
    if(userInput>=1 && userInput<=20){          
        var x=Number(userInput)+15;
        for(var i=0;i<x;i++){
            console.log("<br> blah. x=" + x );               //line1
            //console.log("<br> blah. x=" + x + " i=" + i ); //line2            
        }
    } else {
        console.log("Invalid number; please try again");
    }
}   

并提供(比如)值5,我意外得到以下 一个 输出行:

<br> blah. x=20

但是,如果我提供相同的值,但注释掉第一行并取消注释第二行,我得到以下(预期)输出:

<br> blah. x=20 i=0
<br> blah. x=20 i=1
<br> blah. x=20 i=2
<br> blah. x=20 i=3
<br> blah. x=20 i=4
<br> blah. x=20 i=5
<br> blah. x=20 i=6
<br> blah. x=20 i=7
<br> blah. x=20 i=8
<br> blah. x=20 i=9
<br> blah. x=20 i=10
<br> blah. x=20 i=11
<br> blah. x=20 i=12
<br> blah. x=20 i=13
<br> blah. x=20 i=14
<br> blah. x=20 i=15
<br> blah. x=20 i=16
<br> blah. x=20 i=17
<br> blah. x=20 i=18
<br> blah. x=20 i=19

这是为什么?显然有一个原因。 提前致谢。

4 个答案:

答案 0 :(得分:10)

如果我理解正确,控制台会告诉你:

preview

这意味着,同一行重复20次。看前面的20号码?这种方式更容易理解,因此控制台会将所有相似或相同的响应分组,并在左侧显示数字。

答案 1 :(得分:1)

您没有获得一行,如果以下所有内容相同,您的浏览器的开发者工具的行为就会显示一行。

看起来像这样:

  

注意&#34; 20&#34;在日志之前。

答案 2 :(得分:0)

X将始终评估为20,而每次循环运行时,我将增加1

答案 3 :(得分:0)

我们的控制台已将类似的输出分组。可能在输出旁边有一个19。