立即執(zhí)行函數(shù)
- 我們不想用全局函數(shù)
- 我們要使用局部變量
- ES5里只有函數(shù)有局部變量
- 于是我們聲明一個(gè)
function xxx(){}
然后.call()
- 這個(gè)時(shí)候xxx是全局變量(全局函數(shù))
- 所以我們不能給這個(gè)函數(shù)名字
- function(){}.call()
- 但是chrome會(huì)報(bào)錯(cuò)署咽,語法錯(cuò)誤
- 試出一種方法可以不報(bào)錯(cuò)
-
!function(){}.call()
(我們不在乎這個(gè)匿名函數(shù)的返回值起惕,所以加個(gè)!取反沒關(guān)系)
-
閉包和立即執(zhí)行函數(shù)的聯(lián)合使用
- 立即執(zhí)行函數(shù)使得person無法被外部訪問
- 閉包使得匿名函數(shù)可以操作person
- window.frankGrowUp 保存了匿名函數(shù)的地址
- 任何地方都可以使用window.frankGrowUp
推論:任何地方都可以使用window.frankGrowUp操作person勺爱,但是不能直接訪問person
閉包
函數(shù)