for循环之我见
对于for循环的抵触和惧怕来自与最开始的编程语言学习的肤浅和知识点的薄弱。最近,开始学习JS后,通过查阅资料,做题实践,总结归纳,有了些经验和大家在这分享一下。编程语言之所以设计for循环,是因为在实现各种功能,解决各类问题的过程中,有很多步骤只是数据变化,而处理处理数据的模式没有变,也就是会有很多重复的步骤。在数据模型很大的情况下逐个去做相同的流程显然不现实和不高效。而for循环恰好能处理这些,从而精简了代码,规范了格式。
- for循环的基本结构:
for循环是在脚本的运行次数已经确定的情况下,才可用的。其基本的结构是:
for (变量=开始值;变量<=结束值;变量=变量+步进值) { 需执行的代码 }
也就是说如果脚本的运行次数不确定的或者是动态的,是不能够用for循环的。
- for循环的执行顺序
// for循环的语法:结合下面流程图理解(每次循环的执行顺序为:1-2-4-3, 1-2-4-3, ...) for (1初始化表达式;2条件表达式;3更新表达式) { 4循环体函数 }
- for循环的嵌套应用
在编写代码的过程中,思路要清晰,逻辑要明朗。确定好各个表达式的值,再去实现。在复杂的问题模型下,有时可能会需要嵌套for循环,而且有时还不止两层 for循环,这时就要求程序员的逻辑要清晰。按着代码的执行顺序走下去,步步为营,把大型的、复杂的程序分开层次的查看,也就是复杂问题简单化,你会发 现,for循环原来也不过如此。同时,在for循环的执行期间,还很有可能伴随这条件的判定,也就是for循环和if语句的混合嵌套,就像下面的例子:
这只是for循环与if语句混合部分的,关于每个变量的声明部分并没有给大家展示出来
for(var i = 0; i < all_names.length; i++) for(var j = 0; j < all_scores[all_names[i]].length; j++) { if(all_scores[all_names[i]][j] > 140) scores_A_count++; else if(all_scores[all_names[i]][j] >= 130 && all_scores[all_names[i]][j] <= 140) scores_B_count++; else scores_C_count++; }
可见,逐层分析,按流程走的重要性。
- 最后,想给大家讲的是for循环有时也是很灵活的。
for循环会和break,continue配合使用。break是跳出本层循环,执行循环后面的语句。而continue是跳出本次循环,执行下一次循环。
但是有时需要吧for循环里面的表达式拆分出来,比如下面的例子:
for(var i = 0; i < names.length;) { i++; break; }
也就是说有时为了执行的先后顺序,for循环的结构要去从新改善,比如先执行i++,再去break跳出循环,灵活变换,随机应对才是王道。