本文主要是介绍【JS】立即执行函数IIFE 和闭包到底是什么关系?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
历史小剧场
”我希望认您作父亲,但又怕您觉得我年纪大,不愿意,索性让我的儿子给您作孙子吧!“ ----《明朝那些事儿》
什么是立即执行函数?
特点:
- 声明一个匿名函数
- 马上调用这个匿名函数
- 销毁这个匿名函数
(function () {console.log("I'm a closure!")
})()
等同于
function fn() {console.log("I'm a function!")
}
fn()
立即执行函数作用
- 简化代码,不用先封装再调用,不用起函数名
- 有函数作用域,可以隔离变量
和闭包结合
- 立即执行函数的执行会立即执行函数体,而函数体中包含的闭包会在立即执行函数执行完毕后执行
- 立即函数可以让闭包的实现少写一些代码
// 不用立即函数
function sayName() {const name = 'Tom'return function() {console.log(name)}
}
const say = sayName()
say() // output: Tom// 用立即函数
const sayIIFE = (function() {const name = 'Tom'return function() {console.log(name)}
})()
sayIIFE() // output: Tom
用不用立即执行函数,都可以实现闭包,把变量 name 藏起来,全局访问不到
这篇关于【JS】立即执行函数IIFE 和闭包到底是什么关系?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!