收藏
回答

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

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug INPUT VIEW 微信iOS客户端 iOS 1.02 1803210 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.D = 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 () {

C = {}

C = 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后发现其值遭到篡改,如下如所示,原因不明。





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










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

7 个回答

  • Special
    Special
    2018-04-02

    麻烦给个相关的代码片段(https://mp.weixin.qq.com/debug/wxadoc/dev/devtools/minicode.html),我们定位下问题

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

    不然用什么举栗

    2018-04-04
    有用
    回复
  • masterZ
    masterZ
    2018-04-04

    现在人都喜欢abc来命名么

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

    懂了,真实尴尬

    2018-04-03
    有用
    回复
  • 流云
    流云
    2018-04-03



    你在test01中将对象A赋值给了全局变量D;

    然后又在test02中将全局对象赋值给了C;

    又在getvalue中修改了C的值,其实是改的test01中A对象的值。全局D和test02其实都是指向的A对象。

    题主可以去复习一下js的数据类型。

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

    你好,代码片段如下,供您参考!@Special

    wechatide://minicode/pgEMtnmW6QYU


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

    没人知道吗

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