zoukankan      html  css  js  c++  java
  • 小谢第56问:for、forEach、for...of、for...in 的区别与比较

    for、forEach、for...of、for...in 的区别与比较

    • for 与 forEach

    1、forEach 虽然是 for 循环的简化版本,但是并不是说 forEach 就比 for 更好用,forEach 适用于循环次数未知,或者计算循环次数比较麻烦情况下使用效率更高,但是更为复杂的一些循环还是需要用到 for 循环效率更高。

    2、forEach 不支持在循环中添加删除操作,因为在使用 forEach 循环的时候数组(集合)就已经被锁定不能被修改。(改了也没用)

    3、在 for 循环中可以使用 continue,break 来控制循环和跳出循环,这个是 forEach 所不具备的。【在这种情况下,从性能的角度考虑,for 是要比 forEach 有优势的。(一个长度为100的数据,你for循环到35的时候,实现了功能,达到了目的的话,这个时候可以 break 跳出循环的;使用 forEach 的话,是不能退出循环本身的。)】

    4、所以没有特殊情况我一般都用 for 循环,不会有坑,也没觉得写起来多麻烦,性能还最好,不用担心兼容性的问题( forEach 只支持 IE9 及以上)。最主要的是,for有一个好处是可以break。


    • for…in 作用在数组上【不推荐】

    1、会跳过空位。

    2、如果有原型属性,原型属性也会被访问


    • for…of

    ES6 借鉴 C++、Java、C# 和 Python 语言,引入了 for...of 循环,作为遍历所有数据结构的统一的方法。

    一个数据结构只要部署了 Symbol.iterator 属性,就被视为具有 iterator 接口,就可以用 for...of 循环遍历它的成员。也就是说,for...of 循环内部调用的是数据结构的 Symbol.iterator 方法。

    for...of 循环可以使用的范围包括数组、Set 和 Map 结构、某些类似数组的对象(比如 arguments 对象、DOM NodeList 对象)、后文的 Generator 对象,以及字符串。

    2、使用 for...of 作用在数组,或者类数组的对象上(比如 arguments 对象、DOM NodeList 对象)

  • 相关阅读:
    我爱java系列之---【微服务间的认证—Feign拦截器】
    我爱java系列之---【设置权限的三种解决方案】
    581. Shortest Unsorted Continuous Subarray
    129. Sum Root to Leaf Numbers
    513. Find Bottom Left Tree Value
    515. Find Largest Value in Each Tree Row
    155. Min Stack max stack Maxpop O(1) 操作
    painting house
    Minimum Adjustment Cost
    k Sum
  • 原文地址:https://www.cnblogs.com/xieoxie3000question/p/13911827.html
Copyright © 2011-2022 走看看