闭包
闭包是一个函数在创建时允许该自身函数访问并操作该自身函数之外的变量时所创建的作用域。
闭包可以让函数访问所有的变量和函数,只要这些变量和函数存在与该函数声明时的作用域内就行。
闭包的用法
- 封装私有变量
|
|
通过闭包实现缓存记忆
|
|
即时函数
代码模式:
- 第一组圆括号作用是用于划定表达式的范围
- 第二组圆括号则是一个操作符
- 第一组圆括号内直接是使用的是匿名函数
这段代码执行的操作:
- 创建一个函数的实例
- 执行该函数
- 销毁该函数,因为语句结束后没有任何引用了
类库包装
不希望一些不必要的变量去污染全局命名空间,尤其时那些零时变量,利用闭包和即时函数封装类库,使它尽可能的私有,并且选择性的暴露一些变量到全局空间。
|
|
首先jQuery构造器(匿名函数)赋值给了window.jQuery,使其作为全局变量,然后将其赋值给了一个局部变量jQuery,强制让它保持在即时函数的作用域内。在即时函数的创建的世界中,名称jQuery的意义就是我们所期望的。
另一种实现方式:
首先在匿名函数的作用域中定义了jQuery函数,它可以自由存在于匿名函数的作用域中,然后将其返回并且赋值给一个名为jQuery全局变量,通常只输出一个变量时优先使用这种方式。
偏应用函数?重载函数?
Todo