javascript立即执行函数

立即执行函数–IIFE (Immediately Invokable Function Expressions》

IIFE是我们经常遇到的,IIFE是在函数声明后立即调用的函数表达式,也就是大家说的闭包

1
2
3
4
5
6
7
8
9
# 两种写法模式
(function(){
consoloe.log("我是打印君");
})()

(function(){
console.log("我是打印君!")
}())
# 结果:我是打印君

这样写的好处有哪些呢?
1、不需要为函数命名,执行完成之后就自动销毁了,防止了污染全局变量
2、闭包会形成单独的作用域

也是可以传参数的,具体代码如下

1
2
3
4
5
(function(str){
console.log(str)
})("我是打印君!")

# 结果:我是打印君

在其他的情况下,我也会看到在function前面加! + -运算符,这些运算符都将函数声明转成函数表达式,javascript引擎会识别,并且是立即执行的函数

1
2
3
!function(){
console.log("我是打印君!")
}()
1
2
3
+function(){
console.log("我是打印君!")
}()
1
2
3
-function(){
console.log("我是打印君!")
}()