javascript:算法之for循环
2024-10-10 12:11:51
一、for中的表达式
①短路表达式
a && b
是表达式:当执行的时候如果表达式a结果不是0,就会执行表达式b。如果表达式a执行的结果是0,表达式b不执行
②i++
与++i
的不同
++i && k++
:第一步:i先自己加1,赋给自己(代号i)。第二步:(代号i)与k(这时没自加)进行并运算。第三步:k才自加1
i++ && k++
:第一步:i(这时没自加)和k(这时没自加)进行并运算。第二步:i才自己加1。第三步:k才自加1
i++
与++i
的不同:当他们和其他表达式混合时。
++i先自加1,然后其他表达式(这里&&)
。i++先其他表达式(这里&&),再自加1。
//同If语句一样,`仅控制一条语句`,因此要注意`{}`和`;`的使用
for(var i = 0,k=0; i < 6; i++ && k++) console.log(i,k) ;console.log("汉子")
==for(var i = 0,k=0; i < 6; i++ && k++) {console.log(i,k) }console.log("汉子")
==for(var i = 0,k=0; i < 6; i++ && k++) {console.log(i,k); }console.log("汉子")
/*
0 0
1 0
2 1
3 2
4 3
5 4
汉子
*/
//过程一:i = 0,k=0:二:然后 i=0 小于6:三:打出来i=0 k=0四:!!i++&&k++ (i为0,(执行&&看出)不执行右面表达式, i自加1为1,不执行右面表达式k=0)
//过程二:i = 1,k=0:二:然后 i=0 小于6:三:打出来i=1 k=0四:!!i++&&k++ (i为1,(执行&&看出)执行右面表达式, i自加1为2,执行右面表达式k自加1为1)
//过程三..
for(var i = 0,k=0; i < 6; ++i && k++) console.log(i,k)
/*
0 0
1 1
2 2
3 3
4 4
5 5
*/
//过程一:i = 0,k=0:二:然后 i=0 小于6:三:打出来i=0 k=0四:!!++i&&k++ (i为0,i自加1为1,(执行&&看出)执行右面表达式, ,不执行右面表达式k自加1为1)
//过程二:i = 1,k=1:二:然后 i=0 小于6:三:打出来i=1 k=1四:!!++i&&k++ (i为1,i自加1为2,(执行&&看出)执行右面表达式, ,不执行右面表达式k自加1为2)
//过程三..
准备一
这段转自:http://blog.sina.com.cn/s/blog_af28a75a0101hii9.html
for循环的执行顺序用如下表达式:
for(expression1;expression2;expression3)
{
expression4;
}
执行的顺序应该是:
1)第一次循环,即初始化循环。
首先执行表达式expression1(一般为初始化语句);再执行expression2(一般为条件判断语句),判断expression1是否符合expression2的条件;如果符合,则执行expression4,否则,停止执行;最后执行expression3。
2)第N(N>=2)次循环
首先执行expression2,判断在expression3是否符合在expression2要求;如果符合,则继续执行在expression4,否则,停止执行。最后执行在expression3。如此往复,直至expression3不满足在expression2条件是为止。
总结:
总的来说,执行的顺序是一致的。先条件判断(expression2),再函数体执行(expression4),最后for执行(expression3)。往复......区别在于,条件判断的对象。第一次判断时,对象为初始化语句(expression1),后续的判断对象为执行后的结果(expression3)。
准备二
转:http://blog.sina.com.cn/s/blog_96ea9c6f010176mi.html
1,For语句同If语句一样,仅控制一条语句,因此要注意{}和;的使用
2,如上图的两层for循环,内层for循环的控制区域为绿色框内;外层For循环的控制区域为紫色框内;B块代码不受For循环影响,在外层For循环退出时,执行。
上图中For循环的执行顺序如下:
最新文章
- 我的Android第四章:Android的adb命令使用以及SQlite数据库运用
- Java线程操作方法
- 读《深入php面向对象、模式与实践》有感(一)
- DropDownList怎样动态绑定数据库中的某一条数据
- angular-file-upload 中文API
- php base64编码和urlencode
- UvaLive7362 Fare(欧拉函数)
- leetcode Largest Rectangle in Histogram 单调栈
- java中获取项目在tomcat目录下的路径方法
- python基础1之 由来、种类、优缺点、安装环境
- HTML5_canvas_pen.translate()_
- (.NET高级课程笔记)委托、事件总结
- WebAPI调用笔记
- 读《31天学会CRM项目开发》记录1 - 认识软件开发
- R语言学习路线图-转帖
- 20155239吕宇轩《网络对抗》Exp3 免杀原理与实践
- [ajax] quick double or multiple click ajax submit cause chrome explorer&#39;s error snatshot
- java基础-迭代器(Iterator)与增强for循环
- 洛谷P1309 瑞士轮
- 2018牛客多校1 - J Different Integers 莫队/主席树签到