小程序var that=this

  小程序的js函数中,一般第一句就是var that=this,那么此语句的必要性是什么呢?下面用一段代码来解释这个问题

Page({
  //页面的初始数据
  loadUsers: function () {
    var that=this
    data:{
      questionId:null;
      title:null
    }
    wx.request({
      url:'http://0.0.0.0:5000/question/type=2/2',
      method:'get',
      success:function(res){
        console.log(res.data)
        var d=res.data['data']
        that.setData({
          questionId:d['questionId'],
          title:d['title']})
        console.log(this.data.questionId)
      }
    })
  },

  这段程序报错:Cannot read property 'questionId' of undefined

  这是因为在javascript语言中,this代表着当前的对象,它在程序中随着执行的上下文随时会变化。当原本的loadUsers函数中调用其它接口比如wx.request或success:function时,this就不再代表loadUsers函数,因此就不能由this找到之前定义的data。this包含了当时页面的初始值,state,以及当前你自己定义的函数。解决方法就是用一个that记录loadUsers函数中的这些内容,从而能在接口中使用这些值。

原文地址:https://www.cnblogs.com/luozx207/p/9400133.html