避免闭包造成引用变量无法释放
可以隔断作用域,防止变量名污染(这点我不太明白)
例如我创建了一个时间函数,在很多地方要用到。在其它地方引用这个时间函数的时候,实际上在这个时间函数中就会形成闭包,导致这个时间函数内部的局部变量占据的内存无法被释放掉。
var currentTime = (function (){ var time = new Date(); var year = time.getFullYear(); var month = time.getMonth(); var date = time.getDate(); var hour = time.getHours(); var min = time.getMinutes(); var sec = time.getSeconds(); return year + '-' + month + '-' + date + ' ' + hour + ':' + min + ':' + sec; })();
如果currentTime这个函数不用自执行的话,那么我在其它地方调用它是不是就会导致currentTime里面的局部变量无法释放掉啊?这是我对第一点的理解。
不是太理解,currentTime里面这么多局部变量虽然没有被内存释放掉,但是它们是存在函数内部的啊,我在函数外部和其它地方使用相同的变量名,是不造成污染的吧!
1、造成局部变量名的污染?
2、什么情况下,或者说在什么样的环境中使用自执行函数比较好?
我记得之前的项目有一个date.js,里面全部是关于时间格式的函数。但是都没有使用自执行,是因为之前的项目用的CMD模块规范,所以不存在这样的问题,是嘛?
慕森王
相关分类