05_IIFE-立即调用函数表达式

. 理解

  • 全称: Immediately-Invoked Function Expression

. 作用

  • 隐藏实现
  • 不用命名函数,避免了污染全局变量
  • 用它来编码js模块
  • IIFE内部形成了单独作用域,可以封装一些外部无法读取的私有变量

有时候我们需要在定义函数后立即调用改函数,这时候不能再定义后面加上圆括号,会报错的。

(function (){.......}())// 报错
(function (){......})() //报错

  • 上面两种方式以圆括号开头,JavaScript引擎会认为是一个表达式,不是定义语句。这就叫立即调用的函数表达式。在表达式的后边必须加上分号

(function (){......})() ; 正确

  • 只要是表达式的写法都是对的,写法多种


(function () { //匿名函数自调用
    var a = 3
    console.log(a + 3)
  })();
(function () {
    var a = 1
    function test () {
      console.log(++a)
    }
    window.$ = function () { // 向外暴露一个全局函数
      return {
        test: test
      }
    }
  })()

  $().test() // 1. $是一个函数 2. $执行后返回的是一个对象
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文:http://benalman.com/news/2010/11/immediately-invoked-f...
    murphywuwu阅读 2,435评论 1 2
  • 一、函数声明和函数表达式有什么区别?(*) ECMAScript里面规定了三种声明函数的方式: 构造函数函数也是对...
    婷楼沐熙阅读 3,352评论 0 2
  • 一、函数声明和函数表达式有什么区别?(*) ** 1.ECMAScript里面规定了三种声明函数的方式**①构造函...
    鸿鹄飞天阅读 3,297评论 0 0
  • 最近两个星期总是很浮躁,因为事情太多,就像基因的选择性表达一样,与生俱来的郁闷与纠结的情绪就通通显现粗来。然后就总...
    TiffanyYan37阅读 1,436评论 0 1
  • 文/曲尚菇凉 1. 那年夏天,应该是我这么多年以来过的最悲凉的一个夏天。 夏天不适合恋爱,天气太躁动,情侣之间动不...
    曲尚阅读 5,815评论 20 16