这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战
for
-
for
语句用于创建一个循环,它包含了三个可选的表达式,这三个表达式被包围在圆括号之中,使用分号分隔,后跟一个用于在循环中执行的语句(通常是一个块语句)。 -
for
语句头部圆括号中的所有三个表达式都是可选的。 -
如果条件块表达式也省略的话,则必须确保在循环体内跳出,以防创建死循环。
-
可以使用break语句 或者return 语句来跳出循环。
for in
for...in
以任意顺序遍历一个对象的除 Symbol 以外的可枚举属性。for ... in
不应该用于迭代一个关注索引顺序的数组。for ... in
是为遍历对象属性而创建的,不建议与数组一起使用。for ... in
以任意顺序迭代对象的可枚举属性。for ... in
遍历对象的属性时,其原型链上的属性都会被访问到。- 如果要保证只遍历自身的属性,我们可以这样做:使用 hasOwnProperty
- 可以使用break return 来终止
for ... in
循环
for (var key in obj) {
if(obj.hasOwnProperty(key)){
console.log(key);
}
}
for of
for...of
在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。- 对于
for...of
的循环,可以由break
,throw continue
或return
终止。在这些情况下,迭代器关闭。 for ... of
遍历可迭代对象(通常是数组
),定义要迭代的数据。for ... of
不能遍历 对象 。
let obj = {
name: '章三',
age: 20,
city: '上海'
}
for (let item of obj) {
console.log(item)
}
// 循环对象时 会报以下错误
Uncaught TypeError: person is not iterable
at <anonymous>:2:21
forEach
- 不能使用 break 或者 return语句跳出循环