zoukankan      html  css  js  c++  java
  • for...in 和 for...of 的区别

    for...in

      遍历对象的可枚举属性列表(包括 [[Prototype]] 链)。

      注意:

      1. 遍历对象是无法直接获取属性值的,需要手动获取属性值   =>  因为遍历的是对象中的所有可枚举属性。

      2. for...in 最好只应用在对象上   =>  遍历数组,有时会产生出人意料的结果。因为枚举属性可能不仅包含所有数值下标,还可能包含其他可枚举属性。

    for...of

      一般用来直接遍历数组。 =>  直接遍历值。

      注意:

      1. 不能直接用来遍历对象。(并不是说 for...of 不能用来遍历对象,只要能寻找到对象中内置或者自定义的 @@iterator对象并可以调用它的next()方法。)  =>   因为 数组有内置的 @@iterator, 而普通的对象没有内置的 @@iterator。所以无法自动完成 for...of 遍历。    // 此处的 @ 用来代替,那个特殊符号打不出

      for...of 循环首先会向被访问对象请求一个迭代器对象。然后通过调用迭代器对象的 next() 方法来遍历所有返回值。

      比如使用内置的@@iterator,手动遍历数组:     // @@iterator 本身并不是一个迭代器对象,而是一个返回迭代器对象的函数。

    var arr = [1, 2, 3];
    var it = arr[Symbol.iterator](); 
    // 通过ES6中的符号 Symbol.iterator 来获取对象的 @@iterator 内部属性
    
    it.next;  // {value: 1, done: false}    value:当前的遍历值, done: 是否还有可遍历的值。 
    it.next;  // {value: 2, done: false}
    it.next;  // {value: 3, done: false}
    it.next;  // {done: true}

       2. 若想遍历对象,可以手动定义 @@iterator。

       3. for...of 循环每次调用 myObject迭代器对象的 next() 方法时,内部的指针都会向前移动并返回对象属性列表的下一个值。

     

  • 相关阅读:
    Ubuntu14 vsftp 的安装和虚拟用户配置
    Tomcat 8.5 apr 模式配置
    shell 脚本规范
    Linux ssh的的用法
    zabbix3.0自动发现磁盘并监控磁盘IO
    记一次用Linux curl命令获取Django url返回值异常的问题
    zabbix4.0短信告警配置
    shell脚本从入门到精通(中级)之提高篇
    shell脚本从入门到精通(初级)之入门篇
    jquery ajax error函数和及其参数详细说明 (转)
  • 原文地址:https://www.cnblogs.com/bala/p/14453135.html
Copyright © 2011-2022 走看看