2048
登录
没  有  难  学  的  前  端
登 录
×
<返回上一级

闭包内如何访问外部变量?

javascript作者:猿2048志愿者
数据类似于:[
            {"id":28,"text":"公司信息",    
                "children":[
                    {"id":1,"text":"公司文化"},{"id":2,"text":"招聘计划"},
                    {"id":6,"text":"公司新闻","children":[{"id":47,"text":"行业新闻"}]},
                    {"id":11,"text":"内部新闻","children":[{"id":24,"text":"行政信息"},{"id":27,"text":"高层指示"}]},
                    {"id":22,"text":"联系我们"},
                    {"id":26,"text":"产品展示","children":[{"id":32,"text":"电力产品"},{"id":33,"text":"配件介绍","children":[{"id":55,"text":"公司文化"}]}
                    ]}
                ]
             }
         ] 
         


 for (let i=0,len=data.length;i<len;i++) {
    if (this.organformId === data[i].organguid) {
        data[i].organname = datas[0].organName
    } 
    else {
        if (data[i].children != null && data[i].children.length>0) {
            console.log(this.organformId) //可以访问到
            (function () {
                var _obj = arguments[0];
                console.log(this.organformId)//访问不到,如何修改代码才能在闭包内访问外部变量?
                for (let j=0, _len=_obj.length;j<_len;j++) {
                    if (this.organformId === _obj[j].organguid) {
                         console.log(this.organformId)
                        _obj[j].organname = datas[0].organName
                        _obj[j].organtype = datas[0].organType
                        _obj[j].organDesc = datas[0].organDesc
                    } else {
                        if  (_obj[j].children!=null&&_obj[j].children.length>0) {
                             arguments.callee(_obj[j].children);
                        }
                    }
                }
            })(data[i].children)
        }
    }
代码逻辑及数据均没有问题,只是闭包内部访问不到外部变量?怎么改代码?
评论
点击刷新
评论
相关问题

分享“案例”中大奖

开始分享 中奖规则
分享链接:
联系方式:
2021-03-08中奖名单(每日10名)
×添加代码片段