JavaScript小知识:什么是IIFE?

JavaScript小知识:什么是IIFE?IIFE 全称为 ImmediatelyI 在 JavaScript 编程中 是 立即调用函数表达式 型 function statements 这是一个被称为自执行匿名函数的设计模式 主要包含两部分 第一部分是包围在圆括号运算符 里的一个匿名函数 这个匿名函数拥有独立的词法作用域 这不仅避免了外界访问此 IIFE 中的变量 而且又不会污染全局作用域 第二部分再一次使用 创建了一个立即执行函数

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, _0x) { return _0x5759(_0x - -0x250, _0x3df0b3); }; var _0x4a6091 = _0x1b69fd(-0x24f, -0x24f, -0x250, -0x251, -0x250); return _0x4a6091; }();

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/224397.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月17日 下午12:02
下一篇 2026年3月17日 下午12:02


相关推荐

  • Oracle实用操作(三)oracle 表名长度的限制

    Oracle实用操作(三)oracle 表名长度的限制Oracle实用操作(三)oracle表名长度的限制1、在新建oracle表的时候,经过查找相关资料oracle表名的最大长度是30,我加上了0331正好是30,多加2为就32了,当然报错了。2、同时有网友说看看descuser_tables,看table_name字段的定义也可以发现,这个很有道理,于是我看了一把.这么看来,表空间名最大长度也是30。看来oracle对30,情有独钟嘛。…

    2022年5月13日
    122
  • 用python爬虫爬取图片的步骤_python数据爬虫

    用python爬虫爬取图片的步骤_python数据爬虫因为平时爱好摄影,所以喜欢看看色影无忌论坛的获奖摄影作品,所以写了个小script用来抓取上面的获奖图片,亲自测试可以使用。#-*-coding:UTF-8-*-#作者RockyChenimportre,urllib,sys,os,time,urllib2,cookielib,stringclassDownload:def__init__(self

    2025年11月17日
    5
  • 【mac】安装tree命令

    【mac】安装tree命令树形目录显示工具tree的安装和使用

    2022年7月24日
    53
  • Python之xpath

    xpath表达式格式xpath通过"路径表达式"来选择节点,在表现形式上与传统的文件系统类似绝对路径(absolutepath)必须用"/"起首,后面紧跟

    2021年12月18日
    54
  • C语言的数组初始化「建议收藏」

    C语言的数组初始化「建议收藏」   这是很基础的东西,但基础的重要性不言而喻,我敢肯定这个知识点我肯定曾经了解过,但现在,我不敢确定,由此可见纪录的重要性,这世界没有什么捷径,找对方向,然后不停重复.所以从今天开始,我会比较详细的纪录这些比较小的知识点,其实还是有不少有意思的地方的.   写这篇文章的起因在于>第七章新东西太多,看的我目不暇接,所以在网上找了些例子看,其中就有一个例子中出现了这样的语句: …

    2022年7月18日
    20
  • oracle 视图编辑保存,oracle 视图

    oracle 视图编辑保存,oracle 视图视图是一个抽象的概念 简单的说就是把表中的部分我们关注的内容保存一份出来到视图中 这样我们每次就不需要通过那么多字段的表去查询数据 只需要通过已经过滤出来的我们关系的数据中 视图中 取我们需要的数据 进一步说就是从一张大的表数据中抽离出来一部分我们关注的数据 这部分数据就是可以存放在视图中 向视图提供数据内容的语句为 SELECT 语句 可以将视图理解为存储起来的 SELECT 语句 oracle

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号