同一page页面重复打开时,页面js里声明的变量会互相污染?
发布于 5 年前 作者 chao18 3003 次浏览 来自 问答

如下面代码片段中的that变量,在上面的页面关闭后,下面页面中that的指向变成了关闭了的页面.

这算是小程序的bug?还是就是目前这种规则?如果是已知规则,那官方是否需要改进一下?

https://developers.weixin.qq.com/s/mqa4fHme7ZnX

4 回复

你这代码里就只有一个页面。。。跳来跳去还是那个

我认为小程序的设计是,跳转到新的页面时,仅仅是会把Page()压入栈中,但是Page()之外的部分是不会重新声明.

const app = getApp()
let that;
let count = 1function test(){
  count++;
  console.log(count)
}
test();
Page({
  data: {
    btntext:'setData测试',
  },
  test:function(){
    that.setData({btntext:'setData成功!'})
  },
  onLoad() {
    that = this;
  },
  onShow(){
    this.setData({nodeid:that.__wxExparserNodeId__,btntext:'setData测试'})
  }
})

这是我测试的一段代码,在初次渲染之后,count的输出值是会被累加的.(意味着外部的代码有被运行到)但是之后无论跳转到什么页面,这个count的值就不会继续累加了.由此可得除了第一次渲染会初始化Page()外部的变量,之后的跳转就都不会再次声明这个变量了.

一个页面的进10次栈 AppData 面板数据 都是一套 最新的

看不太懂你要表达什么意思,或者你要做什么东西?

回到顶部