1.什么是IIFE

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

在ES5中,由于没有块级作用域的相关说法,如下

for(var i = 1;i<5;i++){

console.log(i);

}

console.log('i的值为:',i);

我们仍然可以在for循环结束后,访问for循环中定义的相关变量。就如同虽然我们在这个for循环里面设置的一个变量,但是他也会提升到全局作用域中,即我们在外面也会访问到相关的变量,这样就会造成变量污染。我们通常想的是在for循环中定义的循环变量i,通常就只是用来变量的,就希望一旦结束for循环之后,那么这个变量也会随之销毁,那么我们就可以使用IIFE,立即执行函数表达式来进行相关操作

2.IIFE的来源

其实说了这么多,IIFE其实也就是匿名函数,归根结底都是函数,那么函数的定义其实就只有两种,如下,一种是申明式,一种是表达式。但是两种其实存在着不同,其中第二种中存在着变量提升,后续文章会持续更新

function f1()    //函数申明是
var f2 = function()  //函数表达式(其中存在着变量提升的情况,后续文章中会持续更新)

 3.IIFE的使用

其实每句话后面的;可以去掉,但是如果是使用了IIFE声明的函数,那么函数最近的一句话的结尾的;就不能省掉,为什么呢?如果省掉的话,就会默认为未说明完,会将下面的和上面的放在一起,这个后续有关分号的相关内容也会进行更新,但是通常我们会在IIFE前面加上分号,如下所示,这就是一个相关的IIFE定义的函数。其实IIFE所定义的函数我们也可以通过定义普通函数实现一样的功能,不过就是写法稍微麻烦了一些罢了。

var b = 1
;(function () {var b = 2console.log('b的值',b);
})()
console.log(b);

4.IIFE的总结

1 .创建块级(私有)作用域,避免了向全局作用域中添加变量和函数,因此也避免了多人开发中全局变量和函数的命名冲突;有着很好的独立性。

2 .在IIFE中声明的变量或者函数,都会在执行完后立即销毁,这种做法可以减少闭包问题中的内存,因为没有指向匿名函数的引用。只要函数执行完毕,就可以立即销毁其作用域链了;同时也避免了过多占用内存的相关情况

立即执行函数(IIFE)的定义及用法相关推荐

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

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

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

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

  3. 函数指针及其定义和用法

    函数指针及其定义和用法 1.什么是函数指针 如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址.而且函数名表示的就是这个地址.既然是 ...

  4. 【C语言学习笔记】函数指针的定义和用法

    函数指针的定义和用法 先回顾下数组的储存方式,当你在程序中定义了一个数组,那么系统就会自动根据你的数组类型和数组长度申请一块储存空间给你.而且数组名储存的地址刚好就是申请的这块储存空间的首地址,这也是 ...

  5. 函数指针及其定义和用法,C++函数指针详解(附用法代码和注意事项)

    函数指针可以像一般函数一样,用于调用函数.传递参数.在如 C 这样的语言中,通过提供一个简单的选取.执行函数的方法,函数指针可以简化代码.函数指针只能指向具有特定特征的函数.因而所有被同一指针运用的函 ...

  6. php切换当前目录,php 改变当前目录函数chdir()的定义与用法实例详解

    php chdir()函数的定义与用法? 在PHP 中,chdir()函数是改变当前目录,什么意思呢,就是将获取当前的目录,换一个目录,本来你的当前目录是WWW/index目录,当使用了chdir() ...

  7. php sprintf %1,PHP sprintf() 函数的应用(定义和用法)

    语法 sprintf(format,arg1,arg2,arg++) 参数 描述 format 必需.转换格式. arg1 必需.规定插到 format 字符串中第一个 % 符号处的参数. arg2 ...

  8. php中的stripos,php字符串函数stripos()的定义与用法

    php 字符串函数stripos()的作用? 字符串函数stripos()是查找字符串在另一字符串中第一次出现的位置,该函数是不区分大小写的.用起来是很方便的,与其相关的函数有strripos() - ...

  9. JavaScript中的立即执行函数

    原文链接 通常我们声明一个函数有以下几种方式: // 声明函数f1 function f1() {console.log("f1"); } // 通过()来调用此函数 f1();/ ...

最新文章

  1. C# Json 序列化与反序列化二
  2. matlab simulink互感,Simulink互感模块用set_param函数不能正确赋值
  3. IDC最新报告:阿里语音AI登顶中国No.1
  4. 特别浅的渐变蓝色在html里,javascript – 渐变色淡淡的3种颜色
  5. 学python不会英语怎么办_Python学习 英语不好怎么办?这里有官方中文文档你看不看...
  6. 1QPushButton的使用,QLineEdit的使用,设置组件位置,布局(QHBoxLayout,QGridLayout)
  7. 高级Java必看的10本书
  8. Linux系统下MySQL数据库的超级管理员root的密码忘记/忘记密码怎么办?
  9. Sharepoint 2013 发布功能(Publishing features)
  10. python 遗传算法 agv_基于改进遗传算法的AGV路径规划
  11. sqlserver中的分页sql语句,不同于mysql中的limit,相当于top+top
  12. Mongodb常规操作【一】
  13. 登录状态 token
  14. 吴恩达神经网络和深度学习-学习笔记-41-特征点检测
  15. 计算机病毒与木马的区别,计算机病毒和木马的区别
  16. React+Antd中修改分页组件的英文显示
  17. 2021 BNU Winter Training 9 (2020CCPC东北四省赛)
  18. 分享五个绝对称得上妖艳古怪精灵的前端代码效果
  19. 学习记录466@Java Calender类、TimeUnit类以及 ScheduledExecutorService实现定时任务
  20. 《Java修炼指南:高频源码解析》阅读笔记一Java数据结构的实现集合类

热门文章

  1. 开发一款游戏so easy教你如何识别靠谱的游戏外包公司
  2. ui设计师需要学哪些软件
  3. 如何对一个复杂网络的图进行分析? 计算复杂网络相关的所有参数 批处理
  4. 无Internet,安全的解决方法
  5. 此iphone尚未备份显示未连接服务器,iPhone 出现“尚未备份”的提示,如何取消?...
  6. 有了TeamViewer,在家工作不是难事
  7. MMU and MPU
  8. 免费UI色彩搭配素材资源|色卡帮你找准搭配技巧
  9. 计算机信息系统集成一级和二级资质认证通过企业名单
  10. dpdk环境搭建+创建dpdk项目,并连接dpdk库