JavaScript循环_动力节点Java学院整理


Posted in Javascript onJune 28, 2017

要计算1+2+3,我们可以直接写表达式:

1 + 2 + 3; // 6

要计算1+2+3+...+10,勉强也能写出来。
但是,要计算1+2+3+...+10000,直接写表达式就不可能了。
为了让计算机能计算成千上万次的重复运算,我们就需要循环语句。
JavaScript的循环有两种,一种是for循环,通过初始条件、结束条件和递增条件来循环执行语句块:

var x = 0;
var i;
for (i=1; i<=10000; i++) {
  x = x + i;
}
x; // 50005000

让我们来分析一下for循环的控制条件:

i=1 这是初始条件,将变量i置为1;
i<=10000 这是判断条件,满足时就继续循环,不满足就退出循环;
i++ 这是每次循环后的递增条件,由于每次循环后变量i都会加1,因此它终将在若干次循环后不满足判断条件i<=10000而退出循环。

练习

利用for循环计算1 * 2 * 3 * ... * 10的结果。

for循环最常用的地方是利用索引来遍历数组:

var arr = ['Apple', 'Google', 'Microsoft'];
var i, x;
for (i=0; i<arr.length; i++) {
  x = arr[i];
  alert(x);
}

for循环的3个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环:

var x = 0;
for (;;) { // 将无限循环下去
  if (x > 100) {
    break; // 通过if判断来退出循环
  }
  x ++;
}

for ... in

for循环的一个变体是for ... in循环,它可以把一个对象的所有属性依次循环出来:

var o = {
  name: 'Jack',
  age: 20,
  city: 'Beijing'
};
for (var key in o) {
  alert(key); // 'name', 'age', 'city'
}

要过滤掉对象继承的属性,用hasOwnProperty()来实现:

var o = {
  name: 'Jack',
  age: 20,
  city: 'Beijing'
};
for (var key in o) {
  if (o.hasOwnProperty(key)) {
    alert(key); // 'name', 'age', 'city'
  }
}

由于Array也是对象,而它的每个元素的索引被视为对象的属性,因此,for ... in循环可以直接循环出Array的索引:

var a = ['A', 'B', 'C'];
for (var i in a) {
  alert(i); // '0', '1', '2'
  alert(a[i]); // 'A', 'B', 'C'
}

请注意,for ... in对Array的循环得到的是String而不是Number。

while

for循环在已知循环的初始和结束条件时非常有用。而上述忽略了条件的for循环容易让人看不清循环的逻辑,此时用while循环更佳。

while循环只有一个判断条件,条件满足,就不断循环,条件不满足时则退出循环。比如我们要计算100以内所有奇数之和,可以用while循环实现:

var x = 0;
var n = 99;
while (n > 0) {
  x = x + n;
  n = n - 2;
}
x; // 2500

在循环内部变量n不断自减,直到变为-1时,不再满足while条件,循环退出。

do ... while

最后一种循环是do { ... } while()循环,它和while循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:

var n = 0;
do {
  n = n + 1;
} while (n < 100);
n; // 100

do { ... } while()循环要小心,循环体会至少执行1次,而for和while循环则可能一次都不执行。

练习

请利用循环遍历数组中的每个名字,并显示Hello, xxx!

请尝试for循环和while循环,并以正序、倒序两种方式遍历。

小结

循环是让计算机做重复任务的有效的方法,有些时候,如果代码写得有问题,会让程序陷入“死循环”,也就是永远循环下去。JavaScript的死循环会让浏览器无法正常显示或执行当前页面的逻辑,有的浏览器会直接挂掉,有的浏览器会在一段时间后提示你强行终止JavaScript的执行,因此,要特别注意死循环的问题。

在编写循环代码时,务必小心编写初始条件和判断条件,尤其是边界值。特别注意i < 100和i <= 100是不同的判断逻辑。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
学习ExtJS form布局
Oct 08 Javascript
javascript奇异的arguments分析
Oct 20 Javascript
浅析tr的隐藏和显示问题
Mar 05 Javascript
在HTML代码中使用JavaScript代码的例子
Oct 16 Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 Javascript
js实现的倒计时按钮实例
Jun 24 Javascript
jQuery实现自定义checkbox和radio样式
Jul 13 Javascript
js实现登陆遮罩效果的方法
Jul 28 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 Javascript
微信小程序实现点击图片放大预览
Oct 21 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 Javascript
JavaScript方法_动力节点Java学院整理
Jun 28 #Javascript
微信小程序后台解密用户数据实例详解
Jun 28 #Javascript
JavaScript箭头函数_动力节点Java学院整理
Jun 28 #Javascript
JavaScript之filter_动力节点Java学院整理
Jun 28 #Javascript
JavaScript高阶函数_动力节点Java学院整理
Jun 28 #Javascript
JavaScript之Date_动力节点Java学院整理
Jun 28 #Javascript
ES6深入理解之“let”能替代”var“吗?
Jun 28 #Javascript
You might like
php入门教程 精简版
2009/12/13 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php内存缓存实现方法
2015/01/24 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
根据判断浏览器类型屏幕分辨率自动调用不同CSS的代码
2007/02/22 Javascript
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
JavaScript的strict模式与with关键字介绍
2014/02/08 Javascript
jQuery Ajax使用实例
2015/04/16 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
第一篇初识bootstrap
2016/06/21 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
Vue.JS入门教程之自定义指令
2016/12/08 Javascript
JQ中$(window).load和$(document).ready区别与执行顺序
2017/03/01 Javascript
js实现移动端轮播图效果
2020/12/09 Javascript
JS验证输入的是否是数字及保留几位小数问题
2018/05/09 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
python 文件查找及内容匹配方法
2018/10/25 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
Pytorch.nn.conv2d 过程验证方式(单,多通道卷积过程)
2020/01/03 Python
Python 使用 environs 库定义环境变量的方法
2020/02/25 Python
Django分组聚合查询实例分享
2020/04/29 Python
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
MONNIER Frères英国官网:源自巴黎女士奢侈品配饰电商平台
2018/12/06 全球购物
Charles & Colvard官网:美国莫桑石品牌
2019/06/05 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
上课睡觉万能检讨书
2015/02/17 职场文书
社区党支部公开承诺书
2015/04/29 职场文书