闭包
概念
当内部函数被保存到外部时,将会生成闭包。闭包会导致原有作用域链不释放,造成内存泄露(占用)。
作用
- 实现公有变量
eg:函数累加器(num)
- 可以做缓存(存储结构)
eg:eater
- 可以实现封装,属性私有化
eg: Person(); - 模块化开发,防止污染全局变量
防范
闭包会导致多个执行函数共用一个公有变量,如果不是特殊需要,应尽量防止这种情况发生。
立即执行函数
定义
此类函数没有声明,在一次执行过后即释放。适合做初始化工作。
方法
-
第一种:w3c标准
var num = (function (a,b,c){ var num1 = 123; var num2 = 234; return num1+num2; }(1,2,3))
-
第二种
(function (){ })()
-
能被执行符号执行的表达式,他的函数名会被自动忽略,相当于立即执行函数。
var test = function(){ }