. 理解
- 全称: Immediately-Invoked Function Expression
. 作用
- 隐藏实现
- 不用命名函数,避免了污染全局变量
- 用它来编码js模块
- IIFE内部形成了单独作用域,可以封装一些外部无法读取的私有变量
有时候我们需要在定义函数后立即调用改函数,这时候不能再定义后面加上圆括号,会报错的。
(function (){.......}())// 报错
(function (){......})() //报错
- 上面两种方式以圆括号开头,JavaScript引擎会认为是一个表达式,不是定义语句。这就叫立即调用的函数表达式。在表达式的后边必须加上分号
(function (){......})() ; 正确
- 只要是表达式的写法都是对的,写法多种
(function () { //匿名函数自调用
var a = 3
console.log(a + 3)
})();
(function () {
var a = 1
function test () {
console.log(++a)
}
window.$ = function () { // 向外暴露一个全局函数
return {
test: test
}
}
})()
$().test() // 1. $是一个函数 2. $执行后返回的是一个对象
网友评论