|
| 1 | +--- |
| 2 | +id: 5fe035eefb445251f8faa0ad |
| 3 | +challengeType: 1 |
| 4 | +videoUrl: '' |
| 5 | +forumTopicId: -1 |
| 6 | +title: for 循环语句用法详解 |
| 7 | +--- |
| 8 | + |
| 9 | +## Description |
| 10 | +<section id='description'> |
| 11 | + |
| 12 | + |
| 13 | +欢迎关注路条编程网站,本专题主要介绍 JavaScript 基本语法、注释、变量声名、各种运算符、字符串、数组及条件语句等。通过学习 JavaScript 算法及数据结构这一系列文章,你将会逐步掌握 JavaScript 基础相关的知识。 |
| 14 | + |
| 15 | +for 循环语句用法详解。 |
| 16 | + |
| 17 | +今天我们介绍 JavaScript 语言中的第二种循环类型 for 循环,它是 JavaScript 语言中最常见的循环。 |
| 18 | + |
| 19 | +for 循环中的三个表达式用分号隔开。 |
| 20 | + |
| 21 | +语法示例如下所示: |
| 22 | + |
| 23 | +for ([初始化]; [条件判断]; [计数器]) |
| 24 | + |
| 25 | +初始化语句只会在执行循环开始之前执行一次。它通常用于定义和设置循环变量。 |
| 26 | + |
| 27 | +条件判断语句会在每一轮循环的开始执行,只要条件判断为 true 就会继续执行循环。当条件为 false 的时候,循环将停止执行。这意味着,如果条件在一开始就为 false ,这个循环将不会执行。 |
| 28 | + |
| 29 | +计数器是在每一轮循环结束时执行,通常用于递增或递减。 |
| 30 | + |
| 31 | +我们继续以计算 1+2+3 ... +98+99+100 的值算法为例,通过 for 循环进行求值计算,代码如下所示: |
| 32 | + |
| 33 | +var total =0; |
| 34 | +for( var i=1; i<=100; i++) { |
| 35 | + total = total + i; |
| 36 | +} |
| 37 | + |
| 38 | +console.log( total ); // => 5050 |
| 39 | + |
| 40 | +在控制台执行上面代码后,会在控制台输出计算结果为 5050. 与 while 循环计算结果一致。 |
| 41 | + |
| 42 | +for 循环可以按照我们指定的顺序来迭代,通过更改我们的计数器,我们可以按照奇偶数顺序来迭代。 |
| 43 | + |
| 44 | +我们继续调整上面的代码,将计数器部分进行调整,i += 2 让 i 每次循环之后增加 2。计算 1 至 100 内的奇数之和,代码如下所示: |
| 45 | + |
| 46 | +var total =0; |
| 47 | +for( var i=1; i<=100; i += 2) { |
| 48 | + total = total + i; |
| 49 | +} |
| 50 | + |
| 51 | +console.log( total ); // => 2500 |
| 52 | + |
| 53 | +以上代码在控制台执行后,控制台打印输出结果为 2500,大家可以与前面讲解的 while 循环计算奇数的代码进行比较下,使用 for 循环代码更为简洁。 |
| 54 | + |
| 55 | +for 循环也可以逆向迭代,只要我们定义好合适的条件。我们继续调整上面代码,还是计算 100 以内所有奇数之和。为了让每次倒数递减 2,我们需要改变我们的初始化条件,条件判断和计数器。 |
| 56 | + |
| 57 | +我们让初始值为 i = 99,并且当 i > 0 的时候才继续循环。我们使用i -= 2 来让 i 每次循环递减 2 。 |
| 58 | + |
| 59 | +var total =0; |
| 60 | +for( var i=99; i>0 ; i -= 2) { |
| 61 | + total = total + i; |
| 62 | +} |
| 63 | + |
| 64 | +console.log( total ); // => 2500 |
| 65 | + |
| 66 | + |
| 67 | +迭代输出一个数组的每个元素是 JavaScript 语言中的常见需求,for 循环可以做到这一点。下面的代码将 1 至 100 内所有整数添加至数组 arr ,然后通过循环数组里的每个元素求和,计算 1+2+3 ... +98+99+100 的值,并将最终计算结果输出至控制台 : |
| 68 | + |
| 69 | +var arr = []; |
| 70 | +for (var i = 1; i <=100 ; i++) { |
| 71 | + arr.push(i); |
| 72 | +} |
| 73 | +console.log(arr); |
| 74 | +var total =0; |
| 75 | +for( var i=0; i<arr.length; i++ ){ |
| 76 | + total += arr[i]; |
| 77 | +} |
| 78 | + |
| 79 | +console.log( total ); // => 5050 |
| 80 | + |
| 81 | +注意:数组的索引从零开始的,这意味着数组的最后一个元素的下标是:数组的长度 -1。我们这个循环的条件是 i < arr.length ,当 i 的值为长度 -1 的时候循环就停止了。 |
| 82 | + |
| 83 | +如果你有一个二维数组,可以使用相同的逻辑,先遍历外面的数组,再遍历里面的子数组。下面是一个例子: |
| 84 | + |
| 85 | +var arr = [ |
| 86 | + [1,2], [3,4], [5,6] |
| 87 | +]; |
| 88 | + |
| 89 | +var total =0; |
| 90 | +for (var i=0; i < arr.length; i++) { |
| 91 | + for (var j=0; j < arr[i].length; j++) { |
| 92 | + total += arr[i][j]; |
| 93 | + } |
| 94 | +} |
| 95 | + |
| 96 | +console.log( total ); // => 21 |
| 97 | + |
| 98 | +控制台最后会输出每个子数组中每个元素的求和结果 21。 |
| 99 | + |
| 100 | +提示:对于内部循环,我们可以通过 arr[i].length 来获得子数组的长度,因为 arr[i] 的本身就是一个数组。 |
| 101 | + |
| 102 | +</section> |
| 103 | + |
| 104 | +## Instructions |
| 105 | +<section id='instructions'> |
| 106 | + |
| 107 | +</section> |
| 108 | + |
| 109 | +## Tests |
| 110 | +<section id='tests'> |
| 111 | + |
| 112 | +</section> |
| 113 | + |
| 114 | +## Challenge Seed |
| 115 | +<section id='challengeSeed'> |
| 116 | + |
| 117 | +<div id='js-seed'> |
| 118 | + |
| 119 | +```js |
| 120 | + |
| 121 | +``` |
| 122 | + |
| 123 | +</div> |
| 124 | + |
| 125 | + |
| 126 | + |
| 127 | +</section> |
| 128 | + |
| 129 | +## Solution |
| 130 | +<section id='solution'> |
| 131 | + |
| 132 | + |
| 133 | +</section> |
0 commit comments