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 Store的数据访问与更新问题
Apr 28 Javascript
基于jquery的inputlimiter 实现字数限制功能
May 30 Javascript
Jquery动态改变图片IMG的src地址示例
Jun 25 Javascript
php实例分享之实现显示网站运行时间
May 20 Javascript
javascript动态创建及删除元素的方法
Dec 22 Javascript
基于jQuery实现网页进度显示插件
Mar 04 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
JavaScript之RegExp_动力节点Java学院整理
Jun 29 Javascript
zTree获取当前节点的下一级子节点数实例
Sep 05 Javascript
详解为Bootstrap Modal添加拖拽的方法
Jan 05 Javascript
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
Jan 30 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简单命令代码集锦
2007/09/24 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
解决laravel session失效的问题
2019/10/14 PHP
Cookie 注入是怎样产生的
2009/04/08 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
jQuery EasyUI API 中文文档 - Panel面板
2011/09/30 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
Javascript判断文件是否存在(客户端/服务器端)
2014/09/16 Javascript
关于js里的this关键字的理解
2015/08/17 Javascript
jQuery Dialog 取消右上角删除按钮事件
2016/09/07 Javascript
jQuery扩展+xml实现表单验证功能的方法
2016/12/25 Javascript
vue在自定义组件中使用v-model进行数据绑定的方法
2019/03/25 Javascript
详解在Javascript中进行面向切面编程
2019/04/28 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
python清除字符串里非数字字符的方法
2015/07/02 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
python解决pandas处理缺失值为空字符串的问题
2018/04/08 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
PyQt5每天必学之布局管理
2018/04/19 Python
python查看列的唯一值方法
2018/07/17 Python
Python秒算24点实现及原理详解
2019/07/29 Python
Numpy 中的矩阵求逆实例
2019/08/26 Python
Python 实现自动获取种子磁力链接方式
2020/01/16 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
一款利用纯css3实现的超炫3D表单的实例教程
2014/12/01 HTML / CSS
物流管理专业毕业生自荐信
2014/03/04 职场文书
寄语是什么意思
2014/04/10 职场文书
超市开店计划书
2014/09/15 职场文书
离婚起诉书范本
2015/05/18 职场文书
环保宣传语大全
2015/07/13 职场文书
会议新闻稿
2015/07/17 职场文书
合作意向书怎么写
2019/06/24 职场文书
详解JS WebSocket断开原因和心跳机制
2021/05/07 Javascript
springboot如何初始化执行sql语句
2021/06/22 Java/Android