前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6 语法详解(Iterator遍历器 for of)

ES6 语法详解(Iterator遍历器 for of)

作者头像
彼岸舞
发布2021-08-20 18:22:05
3080
发布2021-08-20 18:22:05
举报
代码语言:javascript
复制
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
    </body>
    <script type="text/javascript">
        /**
         * 概念: iterator是一种接口机制, 为各种不同的数据结构提供统一的访问机制
         * 作用:
         *     1. 为各种数据结构,提供一个统一的,渐变的访问接口
         *     2. 使得数据结构的成员能够按某种次序排序
         *     3. ES6创造了一种新的遍历命令for of循环,Iterator接口主要提供for of消费
         * 工作原理:
         *     创建一个指针对象(遍历器对象),指向数据结构的起始位置
         *     第一次调用next方法,指针自动指向数据结构的第一个成员
         *     接下来不断调用next方法,指针会一直往后移动,直到指向最后一个成员
         *     每调用next方法返回的是一个包含value和done的对象,{value: 当前成员的值,done: 布尔值}
         *         value表示当前成员的值,done对应的布尔值标识当前的数据的结构是否遍历结束
         *         当遍历结束的时候返回的value值是undefined,done的值是false
         * 原生具备iterator接口的数据(可用for of 遍历)
         * 扩展理解:
         *     1. 当数据结构部署了Symbol.iterator接口,该数据就是可以用for of遍历
         *     2. 当使用for of去遍历目标数据的时候,该数据会自动去找Symbol.iterator属性
         *     Symbol.iterator 属性指向对象的默认遍历器方法,(承接直接之前的Symbol.iterator)
         *     1. Array
         *     2. arguments
         *     3. set 容器
         *     4. map 容器
         *     5. String
         *     .....
         *     其实对于学过后端语言的人应该非常好理解
         *     就拿Java来说吧
         *         凡是Java中实现了 Iterator接口的对象 都可以使用 iterator 方法返回一个 迭代器
         *         然后通过 hasNext() 返回是否存在下一个元素 和 next() 获取下一个元素
         *     是一样的
         */
        
        // 遍历数组
        let arr = [1,2,3,4]
        for (let item of arr) {
            console.log(item)
        }
        
        // 遍历字符串
        let str = '1231231'
        for (let item of str) {
            console.log(item)
        }
        
        // 遍历arguments
        function foo(){
            for (let s of arguments) {
                console.log(s)
            }
        }
        foo(12,23,34,45)
    </script>
</html>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-08-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档