for of的使用

99 阅读1分钟

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('执行')
​
}