You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vararr=['Felix','Bindy',3,4,5,6,'Lucy',8,9,10];try{arr.forEach(function(val){if(val==='Lucy'){thrownewError('exist from Lucy')}console.log(val);})}catch(e){console.log(e.message);if(e.message=='exist')throwe}
循环 (loop) 或者叫遍历 (loop through),还有一种说法叫迭代 (Iterate), 是让计算机做重复任务的有效的方法。循环是所有语言最基础的语法,
跳出循环
JavaScript
中的遍历主要是对“集合”的遍历,JavaScript
原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6
又新增了Map
和Set
。本文重点讨论JavaScript
原有数据“集合”的遍历,即Array
和Object
。Array
提供了一种顺序存储一组元素的功能,并可以按索引来访问。Object
是一个属性和方法的集合,它是无序的,通过属性名或方法名去访问。JavaScript
的循环遍历语法如下:初始条件
、结束条件
和递增条件
来循环执行语句块true
本文主要介绍前 5 个常见的循环语句,此外
ES5
还给我们提供了 map、reduce、filter、some、every等常见的高阶函数,请移步《JavaScript 高阶函数(Higher-order function) 》, 关于
for ...of
,因为是ES6
中新增的语法,回头会在ES6
中讲解。一、for 循环
for
循环,通过初始条件
、结束条件
和递增条件
来循环执行语句块:让我们来分析一下
for
循环的控制条件: 🔢var i=1
这是初始条件,声明变量i
, 并赋值1
;i<=100
这是判断条件,满足时就继续循环,不满足就退出循环;i++
这是每次循环后的递增条件,由于每次循环后变量i
都会加1
,因此它终将在若干次循环后不满足判断条件i<=100
而退出循环。👍
for
循环不能遍历对象,这是因为递增条件
决定着循环对象必须是有序的,而 Array 是有序,Object 是无序的。for
循环最常用的地方是利用索引来遍历数组或类数组:👍
for
循环的 3 个条件都是可以省略的,如果没有退出循环的判断条件,就必须使用break
语句终止循环,否则就是死循环:👍 也可以使用
continue
跳出本次循环,进入下一个循环:二、for ...in 遍历
for
循环的一个变体是for ... in
循环,它可以把一个对象的所有属性依次循环出来:由于
Array
也是对象,其元素的索引被视为对象的属性,因此,for ... in
循环可以直接循环出Array
的索引:请注意,
for ... in
对Array
的循环得到的是String
类型的值而不是Number
。👍 不过,ECMAScript 5.1 (ECMA-262) 给我们提供了更加简洁优雅的提取对象属性的方式:
Object.keys()
三、while 循环
for
循环在明确循环的初始和结束条件时非常有用。而忽略了条件的for
循环容易让人看不清循环的逻辑,这个时候推荐使用while
循环在
while
循环里只要指定条件为true
,循环就可以一直执行代码块。把本篇的第一段演示代码改写如下在循环体内部变量
i
不断自增,直到变为101
时,不再满足while
条件,退出循环。也可以在循环体内使用
break
终止循环或continue
跳出循环。四、do ...while 循环
do { ... } while()
循环,它和while
循环的唯一区别在于,不是在每次循环开始的时候判断条件,而是在每次循环完成的时候判断条件:👍 需要注意的是: 用
do { ... } while()
循环要小心,循环体至少执行1次,而for
和while
循环则可能一次都不执行。五、forEach() 遍历数组
forEach()
方法用于遍历数组的每个元素,并将元素传递给回调函数。例如:
得到:
👍 注意:
forEach()
对于空数组是不会执行回调函数的。👍 跳出本次循环,不能使用
continue
, 而是用return false
上面的代码,遍历数组 arr , 当遇到一个元素的值完全等于字符串
Lucy
即跳出本次循环,进入下一次Bindy
元素的循环。👍 终止循环,使用
try catch
:上面的代码,遍历数组 arr , 当遇到一个元素的值完全等于字符串
Lucy
时抛出一个 error 给 catch 捕捉到, 然后在 catch 里面 return,这样就能中止循环了。The text was updated successfully, but these errors were encountered: