1.意外的全局变量
.未声明变量
.使用this创建的变量(this指向window)
解决办法:
.避免创建全局变量
.使用严格模式,在js文件头部或者函数的顶部加上use strict
2.闭包引起的内存泄露
原因:闭包可以读取函数内部的变量,然后让这些变量是始终保存在内存中。如果在使用结束后没有将局部变量清除,就可能导致内存泄露。
解决:将事件处理函数定义在外部,解除闭包,或者在定义事件处理函数的外部函数中。
3.没有清除的DOM元素引用
原因:虽然别的地方删除了,但是对象中还存在对DOM的引用。
解决办法:手动删除,赋值为null
4.被遗忘的定时器或者回调
解决办法:手动删除定时器和DOM,removeEventListener移除事件监听
1、登陆微信公众平台,点击【公众号设置】→【功能设置】→【JS接口安全域名】填写你的域名,比如 j.weiwangvip.com 。
2、设置JS接口安全域名后,公众号开发者可在该域名下调用微信开放的JS接口。
注意事项:
1、可填写三个域名,要求是一级或一级以上域名(例:weiwangvip.com,或者 j.weiwangvip.com ),需使用字母、数字及“-”的组合,不支持IP地址及端口号。
2、 填写的域名须通过ICP备案的验证。
3、一个自然月内最多可修改并保存三次。
目前主流浏览器采用的垃圾回收机制是标记清除。标记清除:标记清除的方式需要对程序的对象进行两次扫描,第一次从根(Root)开始扫描,被根引用了的对象标记为不是垃圾,不是垃圾的对象引用的对象同样标记为不是垃圾,以此递归。所有不是垃圾的对象的引用都扫描完了之后。就进行第二次扫描,第一次扫描中没有得到标记的对象就是垃圾了,对此进行回收。
题中的json对象和json2对象在进行第二次赋值的时候,前一次赋值的对象没有了引用,自然会被垃圾回收,此处的重新赋值并不会产生内存泄露的问题