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

 更新时间:2017年06月28日 10:23:54   作者:liaoxuefeng  
这篇文章主要为大家详细介绍了JavaScript循环的相关资料,JavaScript的两种循环方式,一种是for循环,另while一种是循环具有一定的参考价值,感兴趣的小伙伴们可以参考一下

要计算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是不同的判断逻辑。

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

相关文章

  • uni-app实现点赞评论功能

    uni-app实现点赞评论功能

    这篇文章主要介绍了uni-app实现点赞评论功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Three.js实现脸书元宇宙3D动态Logo效果

    Three.js实现脸书元宇宙3D动态Logo效果

    本文主要讲述通过 Three.js + Blender 技术栈,实现 Meta 公司炫酷的 3D 动态 Logo,内容包括基础模型圆环、环面扭结、管道及模型生成、模型加载、添加动画、添加点击事件、更换材质等
    2021-11-11
  • 微信小程序swiper实现文字纵向轮播提示效果

    微信小程序swiper实现文字纵向轮播提示效果

    这篇文章主要介绍了微信小程序swiper实现文字纵向轮播提示效果,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 后端代码规范避免数组下标越界

    后端代码规范避免数组下标越界

    这篇文章主要为大家介绍了后端开发中的代码如何规范避免数组下标越界示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • JavaScript 编写枚举的最有效方法分享

    JavaScript 编写枚举的最有效方法分享

    这篇文章主要介绍了JavaScript 编写枚举的最有效方法分享,JavaScript语言本身不支持枚举。如果我们想模拟枚举,我们可以使用一个对象。更多相关内容感兴趣的小伙伴可以参考一下
    2022-06-06
  • JS实现时间轴自动播放

    JS实现时间轴自动播放

    这篇文章主要为大家详细介绍了JS实现时间轴自动播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • 分享bootstrap学习笔记心得(组件及其属性)

    分享bootstrap学习笔记心得(组件及其属性)

    Bootstrap是一种web框架,是基于HTML,CSS和JS的一种目前较为流行的前端框架。本篇文章将总结常用组件及其属性,需要的朋友参考下吧
    2017-01-01
  • JavaScript给每一个li节点绑定点击事件的实现方法

    JavaScript给每一个li节点绑定点击事件的实现方法

    这篇文章主要介绍了JavaScript给每一个li节点绑定点击事件的实现方法,包括js循环给li绑定参数不同的点击事件,需要的朋友可以参考下
    2016-12-12
  • javaScript 读取和设置文档元素的样式属性

    javaScript 读取和设置文档元素的样式属性

    有时候我们需要用js设置文档的样式属性,下面就是一些方法与原理分析,大家可以看下,应该就没问题了。
    2009-04-04
  • 基于JS代码实现当鼠标悬停表格上显示这一格的全部内容

    基于JS代码实现当鼠标悬停表格上显示这一格的全部内容

    这篇文章主要介绍了基于JS代码实现当鼠标悬停表格上显示这一格的全部内容 的相关资料,需要的朋友可以参考下
    2016-06-06

最新评论