关于for循环的一个知识点

问题1:

function Test()
{
    var k=0;
    for(j=0,i=0;j<6,i<10;j++,i++){
        k=i+j;
    }
    alert(k);//k值是多少?
}
Test();

问题2:

function Test()
{
    var k=0;
    for(j=0,i=0;j<10,i<6;j++,i++){
        k=i+j;
    }
    alert(k);//k值是多少?
}
Test();

问题1答案是18,首先每次for循环的i和j值是相等的:

第一次:j=0,i=0, 符合条件,k=j+i=0;

第二次:j=1,i=1,符合条件,k=j+i=2;

第三次:j=2,i=2,符合条件,k=j+i=4;

第四次:j=3,i=3,符合条件,k=j+i=6;

第五次:j=4,i=4,符合条件,k=j+i=8;

第六次:j=5,i=5,符合条件,k=j+i=10;

第七次:j=6,i=6,符合条件,k=j+i=12;(这里需要注意,循环继续的判断依据以分号前的最后一项为准,即判断i<10符不符合条件。)

第八次:j=7,i=7,符合条件,k=j+i=14;

第九次:j=8,i=8,符合条件,k=j+i=16;

第十次:j=9,i=9,符合条件,k=j+i=18;

第十一次:j=10,i=10,不符合条件,循环结束。

for循环共执行10次,k的最终值等于18。

这里值得一提的是如果把条件j<6,i<10;改成j<10,i<6;

结果将完全不同,此时循环执行到i=5就会结束,此时k=10。

拓展1:

function Test()
{
    var k=0;
    for(var j=0,i=0,a=1;j<10,i<6,a<4;j++,i++,a++){
        k=i+j;
    }
    alert(k);//k值是4
}

拓展2:

function Test()
{
    var k=0;
    for(var j=0,i=0,a=1;j<10,i<6,a<14;j++,i++,a++){
        k=i+j;
    }
    alert(k);//k值是24
}

总结:

  循环继续的判断依据以分号前的最后一项为准。

时间: 2024-09-30 11:01:47

关于for循环的一个知识点的相关文章

Android核心基础(手机卫士的一个知识点总结)

注意:有些功能是需要权限的,在这里并没有写出来,在程序运行中,根据程序报的错误,添加相应的权限即可,里面的具体里面可能有一些小细节,没有明确的写出来,具体的需要在程序中自己调试,解决. 这个总结涵盖了Android的一些核心的内容,如四大组建Service.ContentProvider.BroadCastReceiver.Activity,而且四大组建都必须在清单文件中注册. 还涉及了Android手机底层的一些功能,如读取联系人.短信等.还有一些看似牛别点技术,什么短息拦截,电话拦截,黑名单

【算法思想】循环移动一个数组

问题:如何将一个数组循环左移或者右移k位? 在下面的解决方案中,我们以循环左移为例. 我们最容易想到的是,将前k个元素复制到一个临时的数组中,然后将剩下的n-k个元素向左移动k个位置,然后将之前的k个元素复制到剩下的位置.这种方法使用了k个额外的存储空间.我们想到到另一种方法是,只借助一个临时空间,每次只向左移动1位,循环k次.这种方法产生了多于的运行时间.前面一篇文章中用程序实现了循环右移一个数组的算法.前面提到的都是比较常规的算法,下面从其它角度来考虑这一问题: 循环数组x其实就是交换数组x

【算法编程】循环右移一个数组

仅用一个辅助节点将一个大小为n数组循环右移k位的三种办法: 1.时间复杂度最大:将所有元素每次只移动一位,总共移动k次,程序实现十分容易,在此就不具体实现了. 2.时间复杂度适中:依次将每个元素都放到辅助节点上,然后将其储存到目的节点,具体程序如下: #include<iostream> using namespace std; int gcd(int x,int y); int main() { int n,k; cout<<"请输入数组的维数"<<

iOS开发精选知识点讲解 - 视频等 iOSStrongDemo是由@李刚维护,总结一些iOS开发精选知识点。每一个知识点都有相应的测试代码,非常适合iOS初学者。

https://github.com/worldligang/iOSStrongDemo iOSStrongDemo是由@李刚维护,总结一些iOS开发精选知识点.每一个知识点都有相应的测试代码,非常适合iOS初学者. 涉及功能点 iOS9横竖屏设置的处理方法和实例讲解 iOS开发之如何跳到系统设置里的WiFi界面 iOS视频播放器 UIWebView用法详解及代码分享 使用UIDataDetectorTypes自动检测电话.网址和邮箱 iOS开发之NSTimer使用初探 iOS开发之NSStri

python3中 for line1 in f1.readlines():,for line1 in f1:,循环读取一个文件夹

1 #-*- encoding:utf-8 -*- 2 3 class loadDatas(object): 4 def __init__(self): 5 self.path='./data' 6 def load_compare(self): 7 l1={} 8 f1=open(self.path+'/95b.txt',encoding='utf-8') 9 l2={} 10 f2=open(self.path+'/05b.txt',encoding='utf-8') 11 f=open(s

【C语言基础】unsigned short类型用于循环的一个难点

我在我的知识星球:“C语言解惑课堂”里的第一篇提出一个问题:[第1篇][C语言基础][unsigned short类型用于循环的一个难点]要查看更多的C语言难点解析或者需要提问的同学,微信扫扫文末我的星球二维码加入吧! 一.[问题] 同学们,今天来道C语言比较有意思的题,C程序代码见下图. for循环中我给了变量para一个初始值1,也让para自增1,但是没有指定for循环结束的条件.你觉得有问题吗?会不会是一个无穷尽的循环?如果有问题你打算怎么修改呢? 二.[解惑] 这个循环是会终止的,不会

[每天一个知识点]15-Java语言-字符串连接

昨天说了字符串拼接,今天来说说连接,我指的是非数组或集合类型的一堆内容拼一个字符串出来. 最简单的是用+运算符,然后还有StringBuilder和StringBuffer.如果是培训学校教的,一般都是说首选使用StringBuilder其次是StringBuffer,不要用+效率很低.实际上在大部分情况下使用+已经足够了,因为+实际上编译之后就是StringBuilder(没有StringBuilder的版本是StringBuffer),而且如果是2个字符串常量相加还能在编译器合并成一个. 一

For循环输出一个表格

<!-- 作者:郑伟钊 时间:2017-01-16 描述:通过一个循环的嵌套输出一个表格 --> <?php header("Content-type:text/html;charset=utf-8"); //如果不加这一行,输出的中文会乱码 echo '<table border="1px" width="800" align="center">' ; //设置表格的边框为1px,宽度为800(

for循环中一个不容小觑的问题

for(int i=1;i<=100;i++) 作为程序猿,我们很喜欢使用这种for循环. 可是,当中隐含着一个重要的问题. 过多的编程经历可能使我们的思维产生了一些误解,在上面的for循环中,因为我们在以往过多的编程经历中更加关注for循环体中的内容,导致我们差点儿忽略了那个小i的存在,它扮演着作为计数器的一个"小角色",我们忽略了它,殊不知它的"饭量"也是不小的哦~ #include<stdio.h> #include<time.h>