for循环问题
印象中的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循环问题的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Recurrent Neural Network系列1--RNN(循环神经网络)概述
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...
- Python学习--04条件控制与循环结构
Python学习--04条件控制与循环结构 条件控制 在Python程序中,用if语句实现条件控制. 语法格式: if <条件判断1>: <执行1> elif <条件判断 ...
- 模仿Linux内核kfifo实现的循环缓存
想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...
- 【JS基础】循环
for 循环的语法: for (语句 1; 语句 2; 语句 3) { 被执行的代码块 } 语句 1 在循环(代码块)开始前执行 语句 2 定义运行循环(代码块)的条件 语句 3 在循环(代码块)已被 ...
- 【python之路4】循环语句之while
1.while 循环语句 #!/usr/bin/env python # -*- coding:utf-8 -*- import time bol = True while bol: print '1 ...
- To Java程序员:切勿用普通for循环遍历LinkedList
ArrayList与LinkedList的普通for循环遍历 对于大部分Java程序员朋友们来说,可能平时使用得最多的List就是ArrayList,对于ArrayList的遍历,一般用如下写法: p ...
- JavaScript单线程和浏览器事件循环简述
JavaScript单线程 在上篇博客<Promise的前世今生和妙用技巧>的开篇中,我们曾简述了JavaScript的单线程机制和浏览器的事件模型.应很多网友的回复,在这篇文章中将继续展 ...
- .NET基础 一步步 一幕幕[循环、逻辑语句块]
循环.逻辑语句块 好久不写博客了,断更了好几天了,从上周五到今天,从北京到上海,跨越了1213.0公里,从一个熟悉的城市到陌生的城市,还好本人适应力比较好,还有感谢小伙伴的接风咯,一切都不是事,好 ...
- Linux进程管理及while循环
目录 进程的相关概念 进程查看及管理工具的使用 Linux系统作业控制 调整进程优先级 网络客户端工具 bash之while循环 20.1.进程类型 守护进程 daemon,在系统引导过程中启动的进程 ...
随机推荐
- js 次方 开方
次方 ,用Math.pow(值,次方数) 如: Math.pow(3,2); 3的平方 Math.Pow(2,3); 2的立方 开方Math.sqrt(值) 如: Math.sqrt(9); ...
- cpp(第六章)
1. #include <iostream> #include <limits> int main() { ; ) { std::cout<<"enter ...
- DELPHI XE8 远程调试
最近公司项目遇到问题需要远程调试搜索了一下怎么用 发现网上能找到最新的是XE2上的说明现在已经有一些不同了 按照上面的方法不能调试成功 经过测试XE8的方法如下:1.项目编译设置:2.在被调试电脑上运 ...
- 深入研究React setState的工作机制
前言 上个月发表了一篇 React源码学习--ReactClass,但是后来我发现,大家对这种大量贴代码分析源码的形式并不感冒.讲道理,我自己看着也烦,还不如自己直接去翻源码来得痛快.吸取了上一次的教 ...
- react-router 参数获取
No BB!!! show me the code. Main.js import { BrowserRouter, Route, Link ,Switch} from 'react-router-d ...
- 支付宝即时到账DEMO配置与使用
支付宝网页即时到账功能,可让用户在线向开发者的支付宝账号支付资金,交易资金即时到账,帮助开发者快速回笼资金. 当用户进行支付操作时候可以直接跳转到支付宝支付页面进行支付 1. 准备 关于支付宝签约即时 ...
- Cordova各个插件使用介绍系列(二)—$cordovaBarcodeScanner扫描二维码与生成二维码
详情链接地址:http://www.ncloud.hk/%E6%8A%80%E6%9C%AF%E5%88%86%E4%BA%AB/cordova-2-cordovabarcodescanner/ 这是 ...
- 大话Python正则表达式
python的正则表达式模块re import re match_object=re.compile(r"") result=re.match(match_object," ...
- 详解ES6中的 let 和const
前 言 JRedu ECMAScript 6 是 JavaScript 语言教程,全面介绍 ECMAScript 6 新引入的语法特性. ES6 与上一个版本 ES5 的所有不同之处,对涉及的语 ...
- 远程调用其它站点并设置cookie
远程调用其它站点并设置cookie: 参考js var domainArray = [ {site:'g.com',action:'/b.do?c' } ,{site:'www.baidu.com', ...