收藏
回答

小程序js强引用弱引用的问题 当前版本(1.02.1805181)

在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)]


求大神答疑,谢谢

最后一次编辑于  2018-06-08
回答关注问题邀请回答
收藏

1 个回答

  • 赵青山
    赵青山
    2018-06-08

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

    2018-06-08
    赞同 1
    回复 1
    • 『』.仙人球
      『』.仙人球
      2018-06-09

      谢谢 除了数组外 其他的赋值也是这样吗  用‘一个变量赋值一个对象变量后这两个变量就指向同一个对象’

      2018-06-09
      回复