在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)] |
求大神答疑,谢谢
tempArray 和 that.data.multiArray指向同一个数组,对于一个变量赋值一个对象变量后这两个变量就指向同一个对象,tempArray = that.data.multiArray.slice(0); //这样写可以复制一个数组
谢谢 除了数组外 其他的赋值也是这样吗 用‘一个变量赋值一个对象变量后这两个变量就指向同一个对象’