关于页面内使用let定义全局变量页面退出(onUnload)不释放问题
发布于 6 年前 作者 wujun 2867 次浏览 来自 问答

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

代码如下图:

打印结果如下图:

4 回复

大神能带带我吗

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

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

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

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

看这里,很容易误导人的

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

回到顶部