首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

JavaScript 的 for loop 到底发生了什么?

  •  
  •   ericgui · 106 天前 · 1920 次点击
    这是一个创建于 106 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有这么一段代码:

    
    async getResultFromApi(){
    
       let result = [];	
    
       let resp = await requestApi();
       
       // console.log(resp.data)
       
       for (let item of resp.data){
       // console.log(item)
       	 -> result.push(item.x.y);
       }
       
       return result;
    }
    
    

    这段代码,console.log 可以看到所有信息,也就是说,每一个 item 都是{ x: { y: 'hello'}},但是,箭头这一行总报错,说找不到。cannot get y of null

    而且 console.log(item)实在是打印不出来任何东西。。。。。

    这简直是太无法理解了

    所以请教大家,到底 for loop 发生了什么,console.log 又发生了什么?为什么可以 log 出来,但仍然报错?

    真是快被郁闷死了。

    11 回复  |  直到 2019-08-03 15:05:10 +08:00
        1
    heimeil   106 天前
    console.log(typeof item);
        2
    wunonglin   106 天前
    ```
    let result = []

    try{
    let resp = await requestApi()
    for(const item of resp.data){
    .....
    }
    }catch ( err ){
    console.log(err)
    }
    ```

    err 值看看
        3
    dartabe   106 天前
    The operand of the of clause must be iterable. That means that you need a helper function if you want to iterate over plain objects
        4
    EugeneYWang   106 天前
    像楼上说的,你的 resp.data 不是 iterable
        5
    sker101   106 天前 via iPhone
    console.log(Object.assign({}, item) 试试
        6
    zqx   106 天前 via Android
    不能相信接口数据,要做个容错,这段代码把 y 去了,只 push item.x 肯定没问题
        7
    liuy1994g   106 天前 via Android
    item.x.y 着实属于高风险写法,这也是我越来越不喜欢 js 的原因
        8
    fool079   106 天前 via Android
    你可以 log 这个查看结果 Json.stringify(item)
    不过一般这种情况一定要判空 比如 item && item.x && item.x.y
    也可以用 lodash 的_.get
    也可以用 js 新提案

    不过到底还是接口的数据问题。
        9
    muzuiget   105 天前
    某个 item.x 是 null,最简单不就是“勾选出现异常时中断”吗?然后你就能查看出问题时那个 item 到时是什么。
        10
    lbunderway   105 天前
    typof item
        11
    lbunderway   105 天前
    typeof item
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2172 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 03:11 · PVG 11:11 · LAX 19:11 · JFK 22:11
    ♥ Do have faith in what you're doing.