for,for of 和 for in都可以识别到continue和break,并且在break后中断循环
不能使用return
for
- 通过遍历数组元素的索引,获得对应的数组值
var array = [1,2]
for(var i=0;i<array.length;i++) {
if (array[i] === 1) {
break;
// continue;
// return false;使用return将报错
}
}
console.log(i) //由于break则符合条件后中断循环得到i为0
for of
- 遍历的是数组元素值,可以遍历数组,伪数组(argument),Map,Set,String等
for(var o of array) {
if(o === 1) {
break;
}
}
console.log(o) //由于break则符合条件后中断循环得到o为1
for in
- 一般用于对象遍历,由于其遍历输出顺序不固定,不建议用于遍历数组。
- 对象遍历的是键名,数组遍历时则是数组的索引值
- 若对象值是undefined,null则不执行函数循环
- 会遍历出原型上的属性,可使用hasOwnProperty过滤(或使用Object.keys())
var obj = {name: 1,data: '111'}
for(var key in obj) {
if (obj[key] === 1) {
break;
// continue;
// return false;
}
}
console.log(key) //由于break则符合条件后中断循环得到key为name