1立即执行函数函数表达式(IIFE)
- 需要return结果
( function( ){...} ) ()
或者( function( ){...}() )
举例:通过IIFE给变量a赋值
var a = (function() {
return(12)
})
- 不需要return结果
!function( ){...}( )
举例:通过立即执行函数改变b的值
var b = 5
!function(){
b++
}( )
2闭包
2.1什么是闭包
函数
和函数内部能访问到的变量
的总和就是一个闭包。
- example1:
!function(){
val local = 5
function foo (){
console.log(local)
}
}()
local变量
和foo函数
就组成了闭包,立即执行函数是为了创造一个局部作用域,避免外部访问local变量
。此例含有闭包但是还无法使用。
- example2:
function foo(){
var local = 1
function bar(){
local++
return local
}
return bar
}
var func = foo()
func()
local变量
和bar 函数
就组成了闭包,通过foo函数
return bar 可以使用闭包(提供一个外部访问的接口,也可以使用window.bar = bar
)
2.1闭包的作用
- 闭包用来间接访问变量,将重要的变量放在函数的作用域内,通过提供一个间接访问的函数来访问变量;
- 闭包是JS函数作用域的副产品,因为JS 的函数内部可以使用函数外部的变量。
网友评论