IIFE
-
概念:立即执行函数表达式,指一个函数在定义同时会立即执行,并且一旦执行完毕,该内存空间被释放掉
//1.基本写法 (function(){ //要执行的代码 })() //2.参数传递 ;(function(形参1,形参2...){ //要执行的代码 console.log(形参) })(实参1,实参2....) //3.返回值 let 变量名 = (function(形参1,形参2...){ //要执行的代码 return 要返回的数据 })(实参1,实参2....) -
作用:隔离出单独的作用域,执行之后该空间会被立即释放
for(var i = 0;i<5;i++){ setTimeout(function(){ console.log(i);//5 5 5 5 5 },1000) //延时计时器为异步操作 } for(let i = 0;i<5;i++){ setTimeout(function(){ console.log(i);//0 1 2 3 4 },1000) //let 创建块级作用域,不同作用域之间不受影响 } for(var i = 0;i<5;i++){ //隔离作用域,作为单独的作用域 (function(a){ setTimeout(function(){ console.log(a);//0 1 2 3 4 },1000) })(i) //创建独立作用域,将每次的值传递进去,不受外界影响 }