JS循环

循环

内容来源:菜鸟JavaScript教程
拓展阅读:JavaScript的15种循环遍历,你掌握了几种?

  • for - 循环代码块一定的次数
  • for/in - 循环遍历对象的属性
  • while - 当指定的条件为 true 时循环指定的代码块
  • do/while - 同样当指定的条件为 true 时循环指定的代码块

For 循环

将代码块执行指定的次数

特点:先判断再执行,与while相同

for (语句 1; 语句 2; 语句 3) { 被执行的代码块 }

语句 1 (代码块)开始前执行
语句 2 定义运行循环(代码块)的条件
语句 3 在循环(代码块)已被执行之后执行

for (var i=0; i<5; i++) { logd(i); }

从上面的例子中,您可以看到:

Statement 1 在循环开始之前设置变量 (var i=0)。
Statement 2 定义循环运行的条件(i 必须小于 5)。
Statement 3 在每次代码块已被执行后增加一个值 (i++)。

For/In 循环

遍历对象的属性

For/In语句用于对数组或者对象的属性进行循环操作。
For/In循环中的代码每执行一次,就会对数组或者对象的属性进行一次操作。

var person={fname:"Bill",lname:"Gates",age:56}; for (x in person) // x 为属性名 { logd(person[x]); }

For/Of 循环

可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如arguments对象、DOM NodeList 对象)、Generator 对象,以及字符串。

JavaScript 原有的for-in循环,只能获得对象的键名,不能直接获取键值。ES6 提供for…of循环,允许遍历获得键值

EasyClick是基于ES5的,支持部分ES6的语法

//数组操作 var arr = ['a', 'b', 'c', 'd']; for (let a in arr) { logd(a); // 0 1 2 3 } for (let a of arr) { logd(a); // a b c d }

while 循环

只要指定条件为 true,循环就可以一直执行代码块

特点:先判断后执行

while (条件) { 需要执行的代码 }

while循环()中的表达式,运算结果可以是各种类型,但是最终都会转为真假,转换规则如下。

  • Boolean:true为真,false为假;
  • String:空字符串为假,所有非空字符串为真;
  • Number:0为假,一切非0数字为真;
  • null/Undefined/NaN:全为假;
  • Object:全为真。
while (i<5) { logd("The number is " + i ); i++; }

如果您忘记增加条件中所用变量的值,该循环永远不会结束。这可能导致程序进入死循环

do/while 循环

do/while 循环是 while 循环的变体。
该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会重复这个循环。

特点:先执行再判断,即使初始条件不成立,do-while循环至少执行一次,也就是说do-while循环比while循环多执行一次。

do { 需要执行的代码 } while (条件);

下面的例子使用 do/while 循环。该循环至少会执行一次,即使条件为 false 它也会执行一次,因为代码块会在条件被测试前执行:

do { x=x + "The number is " + i + "<br>"; i++; } while (i<5);

别忘记增加条件中所用变量的值,否则循环永远不会结束!

break 和 continue

break 语句用于跳出循环。
break 语句跳出循环后,会继续执行该循环之后的代码(如果有的话):

for (i=0;i<10;i++) { if (i==3) { break; } logd("The number is " + i); }

continue 用于跳过循环中的一个迭代。
如果出现了指定的条件,然后继续循环中的下一个迭代。

for (i=0;i<=10;i++) { if (i==3) continue; x=x + "The number is " + i + "<br>"; }

对于while、do-while循环,continue之后执行的语句,是循环条件判断;
因此,使用这两个循环时,必须将continue放到 i++ 之后使用,否则continue将跳过 i++进入死循环。