小程序js强引用弱引用的问题 当前版本(1.02.1805181)
发布于 5 年前 作者 gang52 11915 次浏览 来自 问答

在js data 中我定义了数组multiArray  并在 

onLoad: function (options) {}

这个方法中调用下面的方法 ,我震惊的是我的 ‘=’号赋值 ,变成了强引用 。如下

onLoad: function (options) {
    var that = this;
    that.setStartDate()
  },
  setStartDate: function () {
    var that = this
    var minindex
    var tempArray = that.data.multiArray
    var mintime = parseInt(that.data.date.split(' ')[1].substring(0, 2)) + 4
    mintime = mintime + ':00'
    for (var i = 0; i < tempArray[1].length; i++) {
      if (mintime == tempArray[1][i]) {
        minindex = i
      }
    }
    var arr = []
    for (var i = minindex; i < tempArray[1].length; i++) {
      arr = arr.concat(tempArray[1][i])
    }
    tempArray[1] = arr
    if (minindex > 12) {
      return
    }
    that.setData({
      todayArrary: tempArray
    })
  },

在上述函数执行到 that.setData()这个方法时 ,我打印了that.data.multiArray的值 ,居然发生了改变。我不知道我是不是对小程序里面的‘=’理解有误, 求大神指教。以下是打印日志:

执行前:

that.data.multiArray
(2) [Array(7), Array(13)]

执行后:

that.data.multiArray
 
(2) [Array(7), Array(1)]

求大神答疑,谢谢

1 回复

tempArray that.data.multiArray指向同一个数组,对于一个变量赋值一个对象变量后这两个变量就指向同一个对象,tempArray = that.data.multiArray.slice(0); //这样写可以复制一个数组

回到顶部