1. function invoke () {return function () { //return返回0到invoke(),invoke()在进行调用alert(0)}
}
invoke()();//或者!invoke()();2. (function () {return alert(1)
})();3. (function () {alert(3);
}());// 括号和JS的一些操作符(如 = && || ,等)可以在函数表达式和函数声明上消除歧义
// 如下代码中,解析器已经知道一个是表达式了,于是也会把另一个默认为表达式
4. var iife = function () {alert('IIFE')
}();5. true && function(){
alert(2)
}();6. !function(){ /* code */ }();~function(){ /* code */ }();-function(){ /* code */ }();+function(){ /* code */ }();7. new function () {}new function () {} () //带参数写法五花八门,不胜枚举...
复制代码
  1. 再来瞧瞧IIFE与闭包的暖味关系:立即执行函数能配合闭包保存状态。
<p>1</p>
<p>2</p>
<p>3</p>
<p>4</p>
var p = document.getElementsByTagName('p');
for (var i = 0; i < p.length; i++) {    p[i].onclick = function () {alert('我是第' + i + '个')//输出4}
}
复制代码

为什么输出4,因为:代码预先解析,点击任意一个p执行onclick,已经达到了最后一个p,没有将点击每个p的过程值保存住,所以输出4

要想点击每个p出现对应的索引值,就得将i保存到函数内存中 如下:利用IIFE存状态

for (var i = 0; i < p.length; i++) {p[i].onclick = new function (oldi) {return function () {alert('我是第' + oldi + '个');    }}(i)
}
//更直观,可读性的美化下...
for (var i = 0; i < p.length; i++) {new function (oldi) {p[i].onclick = function () {alert('我是第' + oldi + '个');}}(i) //即时调用存贮i
}
复制代码

9.IIFE在js模块化中的作用: 用立即执行函数处理模块化可以减少全局变量造成的空间污染,构造更多的私有变量。

var mo = (function (m) {
var moa = 0;
return {set:function () {return alert(moa);},get:function (i) {return alert(2 * i)},sgt:function (n) {return alert(n * m);}
}
})(22);
mo.set();//0
mo.get(1);//2
mo.sgt(33);//726
复制代码

立即执行函数(IIFE)闭包相关推荐

  1. jacascript 立即执行函数(IIFE)与闭包

    前言:这是笔者学习之后自己的理解与整理.如果有错误或者疑问的地方,请大家指正,我会持续更新! 一直没搞清楚立即执行函数和闭包之间的关系,总结一下: 闭包有很多种理解:访问不到内部作用域,函数就是这样, ...

  2. JavaScript重难点解析2(立即执行函数IIFE,this关键字)

    JavaScript重难点解析2(立即执行函数IIFE,this关键字) 立即执行函数 this关键字 立即执行函数 也叫做匿名函数自调用,可以在定义一段函数之后直接让其执行. ;(function ...

  3. 立即执行函数解决闭包问题

    立即执行函数解决闭包问题 立即执行函数的定义 定义 : 此类的函数没有声明,在一次执行过后释放(被销毁),适合做初始化工作,针对初始化功能的函数,只想让他执行一次的函数,立即执行函数也有参数,也有返回 ...

  4. 匿名自执行函数是闭包吗?

    匿名函数与闭包函数应该是不一样的,我看到网上很多人把匿名自执行函数当做闭包,我认为这是不对的, 闭包定义: 闭包是在一个函数中可以访问另外一个函数的作用域   闭包:    function  fun ...

  5. ES5-7 立即执行函数、闭包深入、逗号运算符

    1. 立即执行函数 定义在全局的函数只有关闭浏览器或者退出程序才会释放 IIFE: Immediately-Invoked Function Expression 解决页面加载自动执行,执行完成后立即 ...

  6. 立即执行函数(IIFE)的定义及用法

    1.什么是IIFE     IIFE是立即执行函数表达式,全称为Immediately-invoked function expression,是一种在避免全局命名和变量污染时常用的一种手法 在ES5 ...

  7. 函数类型:有参函数、无参函数、匿名函数、回调函数、立即执行函数、闭包函数、递归函数...

    1.有参函数:函数定义时,带有参数的函数 设置函数参数的默认值: (1)直接在函数定义位置的小括号内进行赋值 (2)低版本默认值的处理(在函数内部判断该参数是否有默认值,若没有,赋值初始值) 第1种默 ...

  8. JavaScript 自执行函数(闭包)

    1. 全局污染 在变量声明的时候有一个规则:重复声明无效 var num = 123; var num = 'abc'; 重复声明的代码不会报任何错误,但是其声明特征就没有了,会转换成普通赋值语句 故 ...

  9. JS作用域、立即执行函数、闭包

    作用域 首先先介绍一下作用域等一些基础概念. 每个JavaScript函数都是一个对象,对象中有些属性我们可以访问,但有些不可以,这些属性仅供JavaScript引擎存取,[[scope]]就是其中一 ...

  10. JavaScript中的自执行函数和闭包实现过程

    在JS中,也常常需要复用,将一些常见的操作封装起来,目前看到的很多JS库,比如JQuery就是非常典型的,那么如何在JS中写一个可复用的呢?虽然在JS中有类的这个说法,但是我对这个玩意还是很抵触的,但 ...

最新文章

  1. cd: mkdir: rmdir: rm
  2. MySQL模拟:线上误update的恢复
  3. Cookie的小知识
  4. [MySQL优化案例]系列 -- 用TIMESTAMP类型取代INT和DATETIME
  5. 计算机水平考试模拟卷,计算机等级考试模拟题
  6. router-link
  7. Git学习总结(21)——Git 提交规范总结
  8. mybatis根据表逆向自动化生成代码(自动生成实体类、mapper文件、mapper.xml文件)
  9. Beyond Compare 4 智能比较工具、Everything 文件/夹搜索工具,WinRAR,7-Zip 解压缩工具、diagrams 流程图工具
  10. oracle linux 镜像下载|【最新】oracle linux 8.1官网镜像下载,让你下载oracle linux不被坑!
  11. nbu备份nas文件服务器,NBU网络备份大全之远程配置备份策略
  12. Spring5全面详解
  13. Ubuntu 安装 Libmodbus
  14. java练手代码大全手机版_Java版打字练习游戏源码
  15. 我的世界服务器怎么无限刷红石,我的世界无限红石怎么做 无限红石BUG攻略
  16. .net core添加word水印
  17. 用python画卡通图_需要用Python和OpenCV制作一张卡通漫画版的图片
  18. C++函数之递归调用
  19. [传感器][算法][python]根据IMU九轴加速度传感器数据序列,判断是否有触碰或翻转
  20. 使用欧镭2D雷达ROS驱动

热门文章

  1. 对malloc和free的思考
  2. WTL学习笔记——初章
  3. 23种设计模式之模板方法
  4. 使用Python往Elasticsearch插入数据
  5. 技术的价值--从实验到企业实施的关键性思想
  6. 云计算与虚拟化了解二三事
  7. 点点滴滴积累——基于XMLSchema与Annotation的几种Advice的规则
  8. Vista初级使用技巧及故障总结
  9. ipfs-hdfs分布式文件系统
  10. TensorNet——基于TensorFlow的大规模稀疏特征模型分布式训练框架