立即执行函数表达式与闭包

1立即执行函数函数表达式(IIFE)

  1. 需要return结果
    ( function( ){...} ) () 或者 ( function( ){...}() )
    举例:通过IIFE给变量a赋值
var a = (function() {
  return(12)
})
  1. 不需要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 的函数内部可以使用函数外部的变量。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容