uniapp小程序差异歧义,let 全局变量离开后下次竟然还存在

40 阅读1分钟

// 页面A.vue

let xx = Date.now()  // 仅在首次加载时执行一次

export default {
  onLoad() {
    console.log('进入页面A时xx的值:', xx) // 后续进入不会重新获取时间戳
  },
  onUnload() {
    xx = '88'  // 修改的是共享的模块变量
  }
}

场景

微信小程序let xx不会因为navagateTo或delta返回而消失 只要不在export中下次进入a仍然会存在即不是打印新时间而是字符888

因为设计上存在栈,页面只是被隐藏没有真消失 只有redirect relanch或直接关闭小程序再打开才会变化

特定下一些错误可能由这个会引起注意避免 尤其是配合定时器时let timer 时注意onUnload清除定时器