IIFE,全称为:Immediately Invoked Function Expression,在JavaScript编程中,是:立即调用函数表达式。

型:

(function () {statements
})();

这是一个被称为 自执行匿名函数 的设计模式,主要包含两部分。第一部分是包围在 圆括号运算符 () 里的一个匿名函数,这个匿名函数拥有独立的词法作用域。这不仅避免了外界访问此 IIFE 中的变量,而且又不会污染全局作用域。

第二部分再一次使用 () 创建了一个立即执行函数表达式,JavaScript 引擎到此将直接执行函数。

示例

当函数变成立即执行的函数表达式时,表达式中的变量不能从外部访问。

(function () {var name = "Barry";
})();
// 无法从外部访问变量 name
name // 抛出错误:"Uncaught ReferenceError: name is not defined"

将 IIFE 分配给一个变量,不是存储 IIFE 本身,而是存储 IIFE 执行后返回的结果。

var result = (function () {var name = "Barry";return name;
})();
// IIFE 执行后返回的结果:
result; // "Barry"

IIEF表达式可以进行混淆,如使用JShaman对上方代码进行加密,得到如下代码:

var _0x19bd = ['Barry'];
var _0x5759 = function (_0x19bd17, _0x5759c3) {_0x19bd17 = _0x19bd17 - 0x0;var _0x2b266b = _0x19bd[_0x19bd17];return _0x2b266b;
};
var result = function () {var _0x1b69fd = function (_0x52c199, _0x588ee1, _0x48bd78, _0x3df0b3, _0x459047) {return _0x5759(_0x459047 - -0x250, _0x3df0b3);};var _0x4a6091 = _0x1b69fd(-0x24f, -0x24f, -0x250, -0x251, -0x250);return _0x4a6091;
}();

混淆的作用是:使代码难以被阅读,用于保护重要代码。上述代码混淆后,运行也依然正常。

JavaScript小知识:什么是IIFE?相关推荐

  1. JavaScript面试小知识

    JavaScript小知识: 数据类型: 原始(基本.简单)数据类型:5种:number string Boolean undefined 空(null,特殊含义,一般不直接写出来) 引用(复杂)数据 ...

  2. JavaScript高级知识汇总(高级篇)

    目录 JavaScript高级知识总结(高级篇) 一.深入基础 1.1数据类型 1.2数据变量与内存 1.3对象 1.4函数 回调函数 1.5 IIFE 1.6函数中的this 二.函数高级 2.1原 ...

  3. javascript date php date,JavaScript Date 知识浅析

    Date函数 new Date() Date 对象会自动把当前日期和时间保存为其初始值. date.getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31). date.getDa ...

  4. JavaScript 基础知识 - DOM篇(二)

    7. 节点操作 7.1 节点的属性 节点分类: 标签节点 文本节点 属性节点 注释节点 节点常用的属性: nodeType:节点的类型 nodeName:节点名称 nodeValue:节点值 常见的节 ...

  5. JavaScript基础知识与脚本语言总结

    1 Aptana插件安装 1.Aptana插件安装 <1>Aptana是一个非常强大,开源,JavaScript-focused的AJAX开发IDE. <2>它的特点包括: J ...

  6. JavaScript小项目之BMI值计算

    项目题目: 实现BMI值计算器 项目作用: 复习JavaScript课程知识,学习DOM基础知识,熟悉document对象的使用,实现简单的BMI计算器页面. JavaScript小项目系列 前言 一 ...

  7. JavaScript 基础知识 - 入门篇(二)

    11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...

  8. JavaScript 基础知识

    JavaScript 基础知识 文章目录 JavaScript 基础知识 @[toc] 一.JS的基本语法与结构 1.1 JavaScript 用法 1.2 JavaScript 输出 1.3 Jav ...

  9. vue项目中的小知识--快捷键-vue插件版本号--vscode插件等

    vue项目中的小知识--快捷键等 0 版本号 1 代码片段的获取: 2 vscode中一些常用扩展 3 进入另一个文件夹,返回上一级 4查看Vue的版本和Vue/CLI的版本 5 --save-dev ...

最新文章

  1. 达夫设备(Duff‘s Device)
  2. 北斗导航 | 监测和减轻空间天气对GNSS应用的影响
  3. 【Linux系统编程】进程间通信之命名管道
  4. 刷网络课_网络营销实践心得—刘荟萌
  5. Java面试技巧—如何自我介绍
  6. ibm ilog mysql_开源纯C日志函数库iLOG3快速入门(八、如果你喜欢简单日志函数甚于日志函数库)...
  7. C语言实现矩阵的乘法
  8. 固体火箭发动机三维装药逆向内弹道计算
  9. 计算机网络的分类3:按网络的工作方式分类,分为集中式网络、分布式网络
  10. 高位在前低位在后是啥意思_精喹禾灵原药报价在25.5万元/吨高位,草甘膦原药保持2.5万元/吨...
  11. 搭建网站服务器必须开443端口,HTTPS端口必须一定要443吗?
  12. 200行代码实现N子棋(以五子棋为例)
  13. Microsoft Word 论文编排技巧
  14. 如何在腾讯云快速注册域名
  15. CNS服务器(配合百度直连)游戏修复专栏
  16. oracle 11g dul,学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中
  17. Word中插入多张图片/论文图片排版的方法
  18. 微信公众号学习与开发过程
  19. PySpark RDD操作
  20. FVCOM 环境基础配置(1) intel编译器 下载与安装

热门文章

  1. c# listview 显示文件夹
  2. 北京开放大学非凡十年,谱写首都开放教育新篇章
  3. 21秋招,我放弃了前端
  4. 二叉查找树的编程与实现 C语言
  5. invoke方法的使用
  6. nginx+tomcat LVS群集
  7. 阿里云SLB负载均衡理论与详细操作
  8. 小程序 uni-app picker-view改变选中行上下边框样式
  9. java的Scanner
  10. github修改头像