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

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

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

    我有这么一段代码:

    
    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   130 天前
    console.log(typeof item);
        2
    wunonglin   130 天前
    ```
    let result = []

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

    err 值看看
        3
    dartabe   130 天前
    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   130 天前
    像楼上说的,你的 resp.data 不是 iterable
        5
    sker101   130 天前 via iPhone
    console.log(Object.assign({}, item) 试试
        6
    zqx   130 天前 via Android
    不能相信接口数据,要做个容错,这段代码把 y 去了,只 push item.x 肯定没问题
        7
    liuy1994g   130 天前 via Android
    item.x.y 着实属于高风险写法,这也是我越来越不喜欢 js 的原因
        8
    fool079   130 天前 via Android
    你可以 log 这个查看结果 Json.stringify(item)
    不过一般这种情况一定要判空 比如 item && item.x && item.x.y
    也可以用 lodash 的_.get
    也可以用 js 新提案

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