印象中的for语句是这样的,语法:

   for (语句 1; 语句 2; 语句 3) { 被执行的代码块 }   

  语句 1 (代码块)开始前执行 starts.

  语句 2 定义运行循环(代码块)的条件

  语句 3 在循环(代码块)已被执行之后执行

  然而我今天碰到的for语句是这样的,下面是具体的代码: 

for(i=0;j=0;i<10,j<6;i++;j++){
k = i+j;
}
console.log(k)

  而人家给的答案是这样的,结果为18,给的解释是,这个循环要进行10次,第一次,i和j的值都为0,...........第10次i为9,j为9,自加1,进行条件判断,10<10,循环停止。

  然而,事实是这样吗,答案很显然是不对的,首先变量申明及初始化就不对,其次结果也不对。

  我们先来看下结果:

  

  那么这道题目应该怎么改,才能让它的结果为18呢?

  第一种方法:

for(i=0,j=0;i<6,j<10;i++,j++){
k = i+j;
}
console.log(k)

  其实也没改多少,只是改了下逗号分号什么的,然后运行环境的条件变了下,不啰嗦了,我们来分析下这个结果。

  首先是,每次for循环i和j的值都是相等的。

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

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

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

   ..................

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

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

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

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

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

  for循环执行了10次,最终结果为18

  

  第二种方法: 

for(i=0,j=0;i<10||j<6;i++,j++){
k = i+j;
}
console.log(k)

  好了,那么如果将代码改成这样,结果又会是多少呢? 

for(i=0,j=0;i<10,j<6;i++,j++){
k = i+j;
}
console.log(k)

  可以发现,小小的改动,结果就会不一样(结果为10)。分析同上

  

  总结:语句2 循环继续的判断依据以分号前的最后一项为准,而不是以第一项为准。

for循环问题的更多相关文章

  1. 【.net 深呼吸】细说CodeDom(8):分支与循环

    有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...

  2. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  3. Python学习--04条件控制与循环结构

    Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...

  4. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  5. 【JS基础】循环

    for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...

  6. 【python之路4】循环语句之while

    1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...

  7. To Java程序员:切勿用普通for循环遍历LinkedList

    ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...

  8. JavaScript单线程和浏览器事件循环简述

    JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...

  9. .NET基础 一步步 一幕幕[循环、逻辑语句块]

    循环.逻辑语句块   好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...

  10. Linux进程管理及while循环

    目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...

随机推荐

  1. Java IO流之文件流

    一.文件流分类 二.FileInputStream 三.FileOutputStream 四.FileReader 五.FileWriter 六.文件流应用 1,复制或剪切文件 2,读取文件信息 应用 ...

  2. Common.Logging源码解析一

    Common.Logging是Apache下的一个开源日志接口组件,主要用于切换不同的日志库,因为当前流行的日志库有很多向log4j.log4net(log4j的.net版本)等等,所以为了能灵活的切 ...

  3. JavaScript严格模式有什么不同

    看ES6,瞄到“严格模式”,问了下自己什么是“严格模式”?答案好像不是很明朗,遂总结如下: 严格模式声明:“use strict”; 1.禁止变量未声明就赋值 2.限制动态绑定(属性和方法归属哪个对象 ...

  4. Unity3D 骨骼动画原理学习笔记

    最近研究了一下游戏中模型的骨骼动画的原理,做一个学习笔记,便于大家共同学习探讨. ps:最近改bug改的要死要活,博客写的吭哧吭哧的~ 首先列出学习参考的前人的文章,本文较多的参考了其中的表述: 1. ...

  5. MATLAB仿真中连续和离散的控制器有何区别?

    matlab系统同时提供连续和离散的控制器和对象的目的是:在降低用户使用复杂程度的同时提高仿真精度.仿真速度和应用的广泛性. 仿真步长和求解精度的概念对于理解这个问题至关重要. 首先是步长,步长和求解 ...

  6. XAML: 获取元素的位置

    在之前讨论 ListView 滚动相关需求的文章中(UWP: ListView 中与滚动有关的两个需求的实现)曾经提到了获取元素相对位置的方法,即某元素相对另一元素的位置.现将所有相关方法再作整理,并 ...

  7. Python操作redis系列之 列表(list) (四)

    # -*- coding: utf- -*- import redis r =redis.Redis(host=,password="ZBHRwlb1608") 1. Lpush ...

  8. memcached可视化客户端工具

    TreeNMS是一款redis,Memcache可视化客户端工具,采用JAVA开发,实现基于WEB方式对Redis, Memcached数据库进行管理.维护. 功能包括:NoSQL数据库的展示,库表的 ...

  9. angular中的$q服务

    $q的一共有四个api: 1.$q.when(value, successFn, errorFn, progressFn),返回值为一个promise对象 --value可以是一个任意数据,也可以是一 ...

  10. vmware提示:此虚拟机似乎正在使用中,取得该虚拟机的所有权失败错误

    用vm的时候,没有挂起和关闭虚拟机,直接关实体机.然后不幸的就异常了. 启动提示:此虚拟机似乎正在使用中.如果此虚拟机已在使用中,请按"取消"按钮,以免损坏它.如果此虚拟机未使用, ...