收藏
回答

心急如焚,反映一个关于本地变量遭篡改的BUG

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug INPUT VIEW 微信iOS客户端 iOS 6.6.2 1.9.94

本周六遇到一个小程序BUG,请查看!(三天了,还是没有解决)


现象:本地变量遭不明原因篡改。

微信开发者工具版本:1.02 1803210

IOS: 11.3


描述如下:

现有两个页面test01、test02。


test01视图层代码如下:


<view catchtap="turntodtls">

<view>{{A.code}}</view>

<view>{{A.data}}</view>

</view>


test01逻辑层代码如下:


const app = getApp()


Page({

data: {

A: null

},


turntodtls: function (e) {

app.globalData.= this.data.A

console.log(this.data.A)

wx.navigateTo({

url: '../test02/test02'

})

},

onLoad: function (options) {

this.setData ({

A: { code: "0", data: "sinopec" }

})

},

})


test02视图层代码如下:


<view>


<view>

<input value="{{B.code}}" bindblur="getvalue" id="code"></input>

</view>


<view>

<input value="{{B.data}}" bindblur="getvalue" id="data"></input>

</view>


</view>


test02逻辑层代码如下:


var C = {}

const app = getApp()


Page({

data: {

B: null

},


getvalue: function (e) {

if (e.detail.value != "") {

C[e.currentTarget.id] = e.detail.value

}

},


onLoad: function () {

= {}

= app.globalData.D

this.setData ({

B: C

})

},

})


两个页面拟通过全局变量D传递值。

App({

globalData: {

D: null,

},


首先点击test01,页面将以navigateTo方式转至test02,此时继续点击并修改test02中input的值(例如将“sinopec”改为“sino”),并失去焦点(目的是触发绑定函数getvalue),其后点击小程序左上角返回test01页面,并再次进入test02页面,发现页面显示“sino”(原本显示sinopec),打印test01页面中本地变量A后发现其值遭到篡改,如下如所示,原因不明。



微信开发者工具和真机调试均有此现象


共享代码片段如下:

wechatide://minicode/pgEMtnmW6QYU


回答关注问题邀请回答
收藏

9 个回答

  • 小程序技术专员-拉风
    小程序技术专员-拉风
    2018-04-03

    我仔细看过了,步骤: D = A

    C = D


    那显然 A C D都是引用同一个对象,改了C的数据,A当然也改了

    2018-04-03
    有用
    回复
  • Eason
    Eason
    2018-04-08

    js基础还是要有的,不然自己被自己坑,有种变量叫引用类型

    2018-04-08
    有用
    回复
  • Sackboi(●─●)
    Sackboi(●─●)
    2018-04-03

    懂了,真实尴尬...

    2018-04-03
    有用
    回复
  • Sackboi(●─●)
    Sackboi(●─●)
    2018-04-03

    本地变量A,不是全局变量D,请仔细看

    2018-04-03
    有用
    回复
  • Sackboi(●─●)
    Sackboi(●─●)
    2018-04-03

    本地变量A除了在本页面onload中被赋值以外,其他地方均没有被赋值语句,但是最后其值却因莫名其妙的原因篡改了

    2018-04-03
    有用
    回复
  • Sackboi(●─●)
    Sackboi(●─●)
    2018-04-03

    是的

    2018-04-03
    有用
    回复
  • Sackboi(●─●)
    Sackboi(●─●)
    2018-04-03

    我打印的可是本地变量A,与全局变量无关

    2018-04-03
    有用
    回复
  • Sackboi(●─●)
    Sackboi(●─●)
    2018-04-03

    ???

    2018-04-03
    有用
    回复
  • 陈
    2018-04-03

    全局变量修改了一个后面的全部会被修改

    2018-04-03
    有用
    回复
登录 后发表内容