今天偶然发现了一个问题,就是在页面内使用 let 定义了一个全局变量,如 let index = 0; 我每次在onLoad 里面进行 index ++ 操作并使用 console.log(index) 打印,发现页面退出(是onUnload哦)后,再次进来,index 保留的仍然是上一次累加的结果,即再次初始化页面时 console.log(index) 打印的可能是 1 ,2,3 等等,如果是这种逻辑的话,那是不是我只要在页面内定义的全局变量都不释放呢?这样的话,内存怎么办?还是小程序在这一块是有什么优化逻辑呢?
代码如下图:
打印结果如下图:
小程序所有页面共用同一个js运行环境,定义了的变量是一直存在的,如果需要重置应在onUnload中重置或在onLoad的时候进行重新初始化
这样的话,建议在文档中说明下,否则很多人会真的以为小程序的每个页面是单独的模块,且拥有独立的作用域,这样的话如果在很多页面创建了比较多的全局变量,在页面销毁时有没有及时清理掉,肯定会导致内存泄漏的。
你试试在非首页的页面的 page外部执行console.log~猜猜什么时候会打印出来
https://developers.weixin.qq.com/miniprogram/dev/framework/app-service/
建议你阅读社区里的教程,https://developers.weixin.qq.com/ebook?action=get_post_info&token=935589521&volumn=1&lang=zh_CN&book=miniprogram&docid=000a8806958588cb00862bd5851c0a,2.2.4脚本的执行顺序一章。
我建议更新一下文档内容,把https://developers.weixin.qq.com/ebook?action=get_post_info&token=935589521&volumn=1&lang=zh_CN&book=miniprogram&docid=000a8806958588cb00862bd5851c0a 这篇教程里的部分内容在文档中披露出来,直接写在文档的框架那一章
先搞清楚模块化是什么吧。
独立作用域指的这个文件里声明的变量都是局部变量的意思,因为每个文件都会各自包在一个函数里运行的。
每一个文件都是一个模块,模块只会被初始化一次,所以你进同一个页面时,顶部的变量声明是不会重新执行的。
我看楼主根本是小白,就别考虑什么内存泄漏了。一知半解的情况下还想那么多,只会走歪路。
你对模块的认识,我只能呵呵了,你的路还很长啊小伙子
看看你自己的问题多傻B吧,你真懂模块就不会问出这么弱智的问题了。
大神能带带我吗
这还大神,根本就是小白冒充大佬。
小白不小白无所谓,阁下这种鄙视人的态度,似乎不妥吧?
我没有得罪你,你我见解不同可以交流啊
社区本身就是交流的地方,小白也好,大佬也好,大家都是抱着分享or解惑的态度来的,有问题只管说问题,为何要针对人呢?
虽然是码农,读书是少了点,但是基本的素质还是要保持的
阴阳怪气,整个阴阳人,废话真多。
看这里,很容易误导人的