立即执行函数
- 我们不想用全局函数
- 我们要使用局部变量
- ES5里只有函数有局部变量
- 于是我们声明一个
function xxx(){}
然后.call()
- 这个时候xxx是全局变量(全局函数)
- 所以我们不能给这个函数名字
- function(){}.call()
- 但是chrome会报错,语法错误
- 试出一种方法可以不报错
-
!function(){}.call()
(我们不在乎这个匿名函数的返回值,所以加个!取反没关系)
-
闭包和立即执行函数的联合使用
- 立即执行函数使得person无法被外部访问
- 闭包使得匿名函数可以操作person
- window.frankGrowUp 保存了匿名函数的地址
- 任何地方都可以使用window.frankGrowUp
推论:任何地方都可以使用window.frankGrowUp操作person,但是不能直接访问person