for of的使用
for of的使用:适用遍历数组/数组对象/字符串/map/set等拥有迭代器对象(iterator)的集合,但是不能遍历对象,因为没有迭代器。
使用场景:
1.遍历数组,变量是数组里面的元素
2.遍历数组对象,变量是数组里面的对象元素
3.遍历字符串,变量是字符串里面的字符元素
注意事项:
1.for of 不会遍历数组原型上的可读属性
2.for of 如何跳出循环?使用break和continue
3.for of是不能遍历对象,undefined,null,false,0等没有迭代器的类型数据
代码验证:
var arr = [11,22,22]
for(var i of arr){
console.log(typeof i,i) // number 11,number 22,number 22
}
var arrObj = [{a:1},{b:2},{c:3}]
for(var i of arrObj){
console.log(typeof i,i) // object {a:1},object {b:2}object {c:3}
}
// var obj = {
// name:'zq',
// age:18
// }// for-of.js:14 Uncaught TypeError: obj is not iterable
// for(var i of obj){
// console.log(i)
// }
var str = 'abc'
for(var i of str){
console.log(i)// a,b,c
}
// var specObj1 = null; // Uncaught TypeError: specObj1 is not iterable
// for(var i of specObj1){// 报错
// console.log(i)
// }
// console.log('specObj1')
// var specObj2 = undefined; // Uncaught TypeError: specObj2 is not iterable
// for(var i of specObj2){ // 报错
// console.log(i)
// }
// console.log('specObj2')
var specObj3 = '';
for(var i of specObj3){ // 不会报错
console.log(i) // 这里不会执行
}
console.log('specObj3')
// var specObj4 = false;
// for(var i of specObj4){ // Uncaught TypeError: specObj4 is not iterable
// console.log(i)
// }
// console.log('specObj4')
// var specObj5 = 0;// Uncaught TypeError: specObj5 is not iterable
// for(var i of specObj5){ // 报错
// console.log(i)
// }
// console.log('specObj5')
console.log('注意事项')
// 1.for of 不会遍历数组原型上的可读属性
var array = ['z','q']
array.age = 18;
Array.prototype.a = 123;
for(var v of array){
console.log(v) // z,q
}
//2. for of 如何跳出循环?
var jump = [1,2,3]
for(var i of jump){
if(i == 1){
console.log(i);
// return;// Illegal return statement (at
// return true;// Illegal return statement (at
break; // ok跳出整个循环,// 1
// continue;// 跳出本次循环
}
console.log('执行')
}