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 相关文章推荐
JavaScript语法着色引擎(demo及打包文件下载)
Jun 13 Javascript
javascript简单事件处理和with用法介绍
Sep 16 Javascript
jQuery打印指定区域Html页面并自动分页
Jul 04 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 Javascript
常用的JavaScript WEB操作方法分享
Feb 28 Javascript
JavaScript实现打字效果的方法
Jul 10 Javascript
JS+CSS实现表格高亮的方法
Aug 05 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
Angular 4 指令快速入门教程
Jun 07 Javascript
Vue computed计算属性的使用方法
Jul 14 Javascript
详解如何在Vue项目中发送jsonp请求
Oct 25 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面向对象全攻略 (十一)__toString()用法 克隆对象 __call处理调用错误
2009/09/30 PHP
PHPEXCEL 使用小记
2013/01/06 PHP
php实现求相对时间函数
2015/06/15 PHP
PHP微信红包API接口
2015/12/05 PHP
YII2框架中ActiveDataProvider与GridView的配合使用操作示例
2020/03/18 PHP
jscript之Read an Excel Spreadsheet
2007/06/13 Javascript
Json和Jsonp理论实例代码详解
2013/11/15 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
常用的几段javascript代码分享
2014/03/25 Javascript
js QQ客服悬浮效果实现代码
2014/12/12 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
给angular加上动画效遇到的问题总结
2016/02/17 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
如何在vue里添加好看的lottie动画
2018/08/02 Javascript
JavaScript变量作用域及内存问题实例分析
2019/06/10 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
[02:12]2019完美世界全国高校联赛(春季赛)报名开启
2019/03/01 DOTA
推荐下python/ironpython:从入门到精通
2007/10/02 Python
py中的目录与文件判别代码
2008/07/16 Python
Python设计模式之观察者模式简单示例
2018/01/10 Python
对Python中DataFrame选择某列值为XX的行实例详解
2019/01/29 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Python生成验证码、计算具体日期是一年中的第几天实例代码详解
2019/10/16 Python
css3 实现圆形旋转倒计时
2018/02/24 HTML / CSS
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
PHP如何防止SQL注入
2014/05/03 面试题
Java语言程序设计测试题选择题部分
2014/04/03 面试题
12岁生日感言
2014/01/21 职场文书
车辆年审委托书范本
2014/09/18 职场文书
热情服务标语
2014/10/07 职场文书
干部理论学习心得体会
2016/01/21 职场文书