**
从需求业务中理解,例如我想声明一个变量a,并打印a,一般我们会在全局中操作
**
var a = 1
console.log(a)
这样就完成了,但是这样有问题就是 => 代码太多了,你无法避免全局中已经声明过了a变量,所以你想到了用函数作用域包裹它,
var func = function() {
var a = 1
console.log(a)
}
func()
这样能够达到效果,a变量不会造成全局污染,但是稍微有点复杂化了,并且func函数就只用这一次,没必要取个名字,简化如下
因为:
func === function() {
var a = 1
console.log(a)
}
所以:
func() === (function(){
var a = 1
console.log(a)
})() //这就是立即执行函数
拓展:
func(5) ===(function(num) {
var a = 1
console.log(a,num) // 1 5
})(5) //函数传参并执行了