收藏
回答

关于页面内使用let定义全局变量页面退出(onUnload)不释放问题

今天偶然发现了一个问题,就是在页面内使用 let 定义了一个全局变量,如 let index = 0; 我每次在onLoad 里面进行 index ++ 操作并使用 console.log(index) 打印,发现页面退出(是onUnload哦)后,再次进来,index 保留的仍然是上一次累加的结果,即再次初始化页面时 console.log(index) 打印的可能是 1 ,2,3 等等,如果是这种逻辑的话,那是不是我只要在页面内定义的全局变量都不释放呢?这样的话,内存怎么办?还是小程序在这一块是有什么优化逻辑呢?

代码如下图:



打印结果如下图:


最后一次编辑于  2018-08-23  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

15 个回答

  • 晨
    2018-08-23

    小程序所有页面共用同一个js运行环境,定义了的变量是一直存在的,如果需要重置应在onUnload中重置或在onLoad的时候进行重新初始化

    2018-08-23
    赞同
    回复 6
    查看更多(1)
  • JinchaoLee
    JinchaoLee
    2018-08-23


    看这里,很容易误导人的

    2018-08-23
    赞同
    回复
  • Apple Fix手机维修上门回收客服
    Apple Fix手机维修上门回收客服
    2018-08-25

    大神能带带我吗

    2018-08-25
    赞同
    回复 3
    • joker
      joker
      2018-08-26

      这还大神,根本就是小白冒充大佬。

      2018-08-26
      赞同
      回复
    • JinchaoLee
      JinchaoLee
      2018-09-06回复joker

      小白不小白无所谓,阁下这种鄙视人的态度,似乎不妥吧?

      1. 我没有得罪你,你我见解不同可以交流啊

      2. 社区本身就是交流的地方,小白也好,大佬也好,大家都是抱着分享or解惑的态度来的,有问题只管说问题,为何要针对人呢?

      3. 虽然是码农,读书是少了点,但是基本的素质还是要保持的


      2018-09-06
      赞同
      回复
    • joker
      joker
      2018-09-19回复JinchaoLee

      阴阳怪气,整个阴阳人,废话真多。

      2018-09-19
      赞同
      回复
  • joker
    joker
    2018-08-26

    先搞清楚模块化是什么吧。

    独立作用域指的这个文件里声明的变量都是局部变量的意思,因为每个文件都会各自包在一个函数里运行的。

    每一个文件都是一个模块,模块只会被初始化一次,所以你进同一个页面时,顶部的变量声明是不会重新执行的。

    我看楼主根本是小白,就别考虑什么内存泄漏了。一知半解的情况下还想那么多,只会走歪路。

    2018-08-26
    赞同
    回复 2
    • JinchaoLee
      JinchaoLee
      2018-09-06

      你对模块的认识,我只能呵呵了,你的路还很长啊小伙子

      2018-09-06
      赞同
      回复
    • joker
      joker
      2018-09-19回复JinchaoLee

      看看你自己的问题多傻B吧,你真懂模块就不会问出这么弱智的问题了。

      2018-09-19
      赞同
      回复