收藏
回答

页面渲染是正常的,打印却是undefined

框架类型 问题类型 操作系统 工具版本
小程序 Bug Windows RC v1.02.1905081

- 当前 Bug 的表现(可附上截图)


- 预期表现


- 复现路径


- 提供一个最简复现 Demo

//删除明细

deleteDetail(e){

    //e.currentTarget.id

    //e.currentTarget.dataset.index

    var that = this

    var pojos

    console.log("deleteDetail")

    console.log(that.data)

    console.log(that.data.pojos0.lenght)

    for (var i = 0; i<that.data.pojos0.lenght;i++){

        if (i != e.currentTarget.dataset.index){

            pojos.push(that.data.pojos0[i])

        }

    }

    that.setData({

        pojos0:pojos

    })

}

模拟与真机上都调试过:页面渲染是正常的,打印出来却是 undefined


最后一次编辑于  2019-05-13
回答关注问题邀请回答
收藏

2 个回答

  • Maverick
    Maverick
    2019-05-13

    那个Array(3)才是你调用console.log时pojos0的值。


    你展开对象,控制台会重新读取这个对象,此时pojos0的值已经被改为undefined。


    你自己看你代码中哪里修改了这个值。

    2019-05-13
    有用
    回复 2
    • 2019-05-13

      没有再修改了呀,附代码如下:

      //删除明细

      deleteDetail(e){

          //e.currentTarget.id

          //e.currentTarget.dataset.index

          var that = this

          var pojos

          console.log("deleteDetail")

          console.log(that.data)

          console.log(that.data.pojos0.lenght)

          for (var i = 0; i<that.data.pojos0.lenght;i++){

              if (!= e.currentTarget.dataset.index){

                  pojos.push(that.data.pojos0[i])

              }

          }

          that.setData({

              pojos0:pojos

          })

      }


      2019-05-13
      回复
    • Maverick
      Maverick
      2019-05-13回复

      你定义pojos却没有给值,此时pojos是undefined。

      你根据原pojos的长度循环,却把长度length写成了lenght,取的不是数组长度,而是undefined,0<undefined为false,导致for代码块根本没有执行。

      for代码块若是执行了你这段代码必然报错,因为undefined没有push方法。

      最后你setData就是把pojos设置成undefined了(控制台也提示了)


      解决:

      var pojos 改为 var pojos = []

      lenght改为length

      2019-05-13
      1
      回复
  • 铭锋科技
    铭锋科技
    2019-05-12

    开发工具有这个错误吗?

    2019-05-12
    有用
    回复
登录 后发表内容