Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript-变量在for循环问题中递增_Javascript_For Loop - Fatal编程技术网

JavaScript-变量在for循环问题中递增

JavaScript-变量在for循环问题中递增,javascript,for-loop,Javascript,For Loop,我试图创建一个for循环,通过数字1-4递增并打印它们,但是当我在循环后打印I的值时,我的代码输出5 (i=1;i

我试图创建一个for循环,通过数字1-4递增并打印它们,但是当我在循环后打印I的值时,我的代码输出5

(i=1;i<5;i++)的
{
document.write(i+“
”);//输出数字1-4 } 文件。写入(“新i:+i”)//输出5
您可以将最终表达式部分移动到的条件部分,其中仅当值小于
4
时才会发生增量

vari;
对于(i=0;i<4&&++i;){
console.log(i);//1…4
}

console.log('last value',i);//4
在每个循环开始时评估i<5的测试子句;如果为false,则循环退出(将值保留为5)。i++部分总是在迭代结束时出现,这意味着在循环中处理完数字4后,它将其递增到5,然后循环到循环的顶部,再次检查条件(i
  • 要处理的循环块的条件是
    i<5
    ,因此
    i
    必须小于5才能计算其中的语句和表达式
  • 每次通过时,将
    i
    增加1
  • i
    等于4时,再次将其递增1,使
    i
    等于5。
    i<5
    不再为真,因此不会执行循环内块
  • 没有任何东西将
    i
    返回一个增量;因此它将在循环后保留该增量
您可以采用独特的方法,但通常情况下,下面的第一个和最后一个示例是通用方法:

var log=console.log;
//示例1:在之后减少循环迭代器
对于(变量i=1;i<5;i++)
日志(i);
log('newi:',--i);//4
//示例2:按条件计数
var计数=0;
对于(变量i=1;i<5&&++count;i++)
日志(i);
log('newi:',count);//4
//示例3:循环体中的计数
var计数=0;
对于(变量i=1;i<5&&++count;i++)
日志(i);

log('New i:',count);/4
请使用count变量,因为每次执行语句后,i值都会增加。也就是说,循环执行完毕后,i值将始终为5

var计数=0;

对于(i=1;i而言,当您在循环语句中声明变量时,它将变量存储在与循环相同的范围内。循环在循环结束时递增(i++),然后检查条件(i<5)以查看它们是否应该重复。循环结束后,变量i仍然存在。请参阅下面的代码段以了解逐次播放

另外,在声明i时应该使用var关键字,否则,变量将存储在全局范围中(这是一种糟糕的做法)

//这里捕获变量i(使用var关键字)
对于(变量i=1;i<5;i++){
//对于第四次迭代,i==4
//所以它打印4。
文件.编写(i);
//我现在是5岁。
//然后循环检查该条件,以查看它是否正确
//应该继续。i不小于5,因此循环中断。
}
//i的值仍然是5,所以这个打印5。
文档。写入(“
”+i);
  • 您已将i声明为全局变量
  • 这就是for循环的工作原理
  • 用于(初始化、条件、增量/减量){
    }
    var数组=[1,2,3,4];
    array.forEach(函数(值){
    文件。写入(值+“
    ”); });
    document.write(“处理的值:”+array.length)
    这就是循环停止的原因,因为基本上
    i
    5
    值,并且由于您将
    i
    变量设置为全局变量,您可以在
    for
    循环外部访问它,它保持
    5
    值。
    i++
    发生在每次迭代结束时,因此当
    i
    等于4时,您就可以编写它到文档,然后将
    i
    增加到5-这就是导致
    i<5
    为false并停止循环的原因,
    i
    现在是
    5
    。为什么不将变量设置为5?