首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏飞鸟的专栏

    JavaScript IIFE

    IIFE 可以用于创建独立的作用域,避免变量污染和命名冲突,并且可以保护函数内的变量不被外部访问。IIFE的概念: IIFE是一个在定义后立即执行的匿名函数。 IIFE的语法: IIFE的语法包括两部分:函数表达式和调用括号。函数表达式可以是匿名函数或命名函数,但由于IIFE是立即执行的,通常使用匿名函数。 IIFE的作用:创建独立的作用域:IIFE在函数内部创建了一个独立的作用域,可以用于封装变量,避免变量污染和全局命名冲突。数据隐私:IIFE内部的变量和函数对外部是不可见的,从而保护了数据的隐私性。 模块化开发:IIFE可以用于实现模块化的开发,将相关的功能封装在独立的IIFE中,便于管理和维护。 IIFE的优点:避免全局污染:IIFE中定义的变量和函数都是在函数作用域内,不会污染全局命名空间,减少命名冲突的可能性。数据隐私:IIFE中的变量和函数对外部是不可见的,保护了数据的隐私性和安全性。

    43130编辑于 2023-05-17
  • 来自专栏OECOM

    JavaScript立即执行函数(IIFE)的使用

    js的立即执行函数(IIFE)有两种写法,分别为:(function ( ){})( ) 与 (function ( ){}( )) ,这两种写法基本上是没有区别的。 那么为什么要 IIFE? foo; // ReferenceError: foo is not defined 现在的论点是,不使用IIFE,我们可以使用块范围变量来获得相同的结果。 闭包和私人数据 IIFE的另一个用例是围绕由IIFE返回的函数访问的局部变量提供包装范围。通过这种方式,即使函数在IIFE的词法范围外执行,也会创建一个闭包,使函数能够访问局部变量。 在IIFE中,我们将跟踪每次调用计数器函数时递增的私有计数器变量。 为了解决命名冲突问题,可以将一段代码封装在一个IIEF中,将一个全局变量(比如,jQuery)作为参数传入IIFE

    3K20发布于 2020-07-01
  • 来自专栏pangguoming

    JavaScript的IIFE(即时执行方法)

    前面的话   严格来讲,IIFE并不是闭包,因为它并不满足函数成为闭包的三个条件。但一般地,人们认为IIFE就是闭包,毕竟闭包有多个定义。 来说,通过作用域链来查找变量与普通函数有一些不同的地方 【with】   with语句中的IIFE会先在with语句中查找,然后再向上查找。 一般用于构造私有变量,避免全局空间污染   接下来用一个需求实现来更直观地说明IIFE的用途。 ) 写在前面 这是一篇译文,原文:Immediately-Invoked Function Expression (IIFE) 原文是一篇很经典的讲解IIFE的文章,很适合收藏。 我为什么更愿意称它是“立即执行函数”而不是“自执行函数” IIFE的称谓在现在似乎已经得到了广泛推广(不知道是不是原文作者的功劳?)

    1.8K50发布于 2018-03-07
  • 前端模块:CJS, AMD, UMD, ESM, System 和 IIFE

    UMD(Universal Module Definition,通用模块化定义) — amd,cjs 和 iife 包含在一个文件中。ES— 将 bundle 保存为 ES 模块文件。 在使用时需要在 index.html 中引入 system.js立即执行的函数表达式(IIFE)模块正如模块名所示,IIFE 是一个适合用 <script> 标签引入的自执行函数。 我是第二个立即执行函数')}())此代码可以在浏览器中运行,也是较为常见的Javascript SDK 引入方式参照整理:What Are CJS, AMD, UMD, ESM, System, and IIFE

    1.3K10编辑于 2024-03-13
  • IIFE 立即执行函数表达式

    IIFE全称为Immediately Invoked Function Express-立即执行函数(表达式),顾名思义,是在定义之后立即执行的函数。 IIFE主要以保护变量范围著称,时候也会被称为“自执行的匿名函数”(self-executing anonymous function)。实际使用闭包定义在IIFE内部的变量外界是访问不到的。 当闭包跟IIFE结合的时候,会有以下两种优势:变量范围得到安全限制,能够避免被意外行为修改;你可以在函数外部修改函数内部的变量。这听起来破坏了第一种优势,实际上并没有。 你还有IIFE可以用,Immediately Invoked Function Expression-立即执行函数可以达到相同的目的。 你无法在外部访问IIFE内部定义的变量。

    37010编辑于 2024-03-11
  • 来自专栏前端新视界

    立即执行函数表达式(IIFE

    立即执行函数表达式(IIFE) 幸运的是,固定的语法错误很简单。最普遍接受的方式告诉解析器这是一个被括号包裹的函数表达式。 循环结束之后, // 尽管 `i` 的值是元素总数, 但是在 IIFE 中 // `lockedInIndex` 的值是函数表达式调用时传入的(`i`)的值 // 因此当点击链接时, 显示的值是正确的 你已经发现这一称呼被提到了多次,但也许并不清晰,我已经提议“立即执行函数表达式”这一术语,如果你喜欢缩写,也可以称呼“IIFE”。“iffy”的发音提醒了我,我很喜欢,让我们这样称呼它吧。 (function foo(){ /* code */ }()); // IIFE 也可以自执行, 尽管这并不是最 // 有用的方式。 我认为“IIFE”听上去比“IEFE”更好。 以上就是我的看法。

    1.2K50发布于 2018-01-17
  • 来自专栏前端の进行时

    JavaScript-立即调用函数表达式(IIFE

    这种函数就叫做立即执行函数,全称为立即调用函数表达式IIFE(Imdiately Invoked Function Expression) 二、立即调用函数表达式 2.1 概念 立即调用函数表达式(IIFE 2.4 作用 (1)IIFE 中的匿名函数拥有 独立的词法作用域。这不仅避免了外界访问此 IIFE 中的变量,而且又不会污染全局作用域。(另一种说法 【构造一个函数作用域,防止污染全局变量】) ? (3)【注意】将 IIFE 分配给一个变量,不是存储 IIFE 本身,而是存储 IIFE 执行后返回的结果。 ? 2.5 示例 接下来用一个需求实现来更直观地说明IIFE的用途。 【3】IIFE 其实这样做,还是有问题。有些代码可能会无意中将add.count重置 使用IIFE把计数器变量保存为私有变量更安全,同时也可以减少对全局空间的污染 ? 参考文章 深入理解JavaScript系列(4):立即调用的函数表达式 汤姆大叔 (译)详解javascript立即执行函数表达式(IIFE) 韩子迟 深入理解闭包系列第三篇——IIFE 小火柴的蓝色理想

    1.5K20发布于 2019-03-13
  • 来自专栏Web前端开发

    关于立即调用的函数表达式(IIFE

    上面两种写法都是以圆括号开头,引擎就会认为后面跟的是一个表示式,而不是函数定义语句,所以就避免了错误 这就叫做“立即调用的函数表达式”(Immediately-Invoked Function Expression),简称 IIFE 如果省略分号,遇到连着两个 IIFE,可能就会报错 // 报错 (function(){ /* code */ }()) (function(){ /* code */ }()) 上面代码的两行之间没有分号 () { /* code */ }(); -function () { /* code */ }(); +function () { /* code */ }(); 通常情况下,只对匿名函数使用 IIFE 它的目的有两个:一是不必为函数命名,避免了污染全局变量; 二是 IIFE 内部形成了一个单独的作用域,可以封装一些外部无法读取的私有变量。

    74140发布于 2019-09-23
  • 来自专栏leon的专栏

    lodash源码解读之模块化的基础——IIFE

    IIFE(Immediately Invoked Function Expression),中文一般翻译为匿名立即执行函数 IIFE详解 构成 IIFE包含两部分。 匿名函数中可以正常访问更高词法作用域中的变量和方法 // 浏览器环境下 var name = 'wall'; (function(){ console.log(name); // 在控制台正常输出`wall` })(); 所以,IIFE IIFE在lodash中的应用 先上源码: ;(function(){ // code }.call(this))(); 第一个;的作用 工具库的源码,一般都是;开始。 console.log(this); //undefined in strict or global })(); } var test = new Foo; 参考 MDN术语表-IIFE

    89530发布于 2019-08-28
  • 来自专栏软件开发

    JavaScript学习总结(三)——闭包、IIFE、原型、函数与对象

    3.5、立即执行函数表达式 (IIFE) IIFE即Immediately-Invoked Function Expression,立即执行函数表达式,在 JavaScript 中每个函数被调用时,都会创建一个新的执行上下文 3.5.7、IIFE的作用 1)、提高性能 减少作用域查找时间。 将全局对象放在IIFE作用域内提升js解释器的查找速度和性能。 的变形 也许有人会说IIFE将参数放在最后,需要移动到文档的末尾才能看到参数,比较麻烦,那么可以将IIFE变形为如下形式: (function(n){ console.log 立即执行的函数,主要的功能函数变成的IIFE的参数了。

    1.9K61发布于 2018-01-04
  • 来自专栏全栈开发工程师

    深入理解 JavaScript 立即执行函数表达式(IIFE)

    深入理解 JavaScript 立即执行函数表达式(IIFE) 什么是 IIFE? 最后的括号 () 用于立即调用这个函数 为什么要使用 IIFE? 返回值的 IIFE var result = (function() { return "IIFE的返回值"; })(); 4. 箭头函数形式 (() => { console.log("使用箭头函数的IIFE"); })(); IIFE 的实际应用场景 1. ),但理解 IIFE 仍然很重要,因为: 很多老代码仍在使用 IIFE 在某些特定场景下 IIFE 仍是最佳选择 理解 IIFE 有助于更好地理解 JavaScript 的作用域和闭包概念

    57110编辑于 2025-01-13
  • 来自专栏农历七月廿一

    来说一下JS中IIFE函数是什么,什么是隐藏实现

    写在前面 今天说一下什么是IIFE函数,为什么说这个,几个原因,一个是想总结一下,第二个是面试的时候确实会问到,考验功底的时候到了,所以这里还是作为一种记录的方式给大家说一下! 解释 IIFE 是Immediately Invoked function expression的缩写,意思就是立即执行函数表达式 隐藏实现:系统看不到我们的函数,但是我们却可以用它实现逻辑功能 举例子 { console.log("我是一个js函数") } 以上是我们写代码的时候经常用到的创建函数的方式,但是如果我们想执行他的时候,就需要进行函数的调用,比如 _test() 回到主题,IIFE 函数其实就是一个自执行函数,代码如下: (function () { console.log("我是一个IIFE函数") })() 解释一下这里为什么要使用一个小括号将函数包裹起来,原因很简单

    1.4K20发布于 2021-08-31
  • 来自专栏自译文章/自学记录

    Immediately-Invoked Function Expression (IIFE)即调函数表达式

    除了提供一些关于IIFE这个模式的非常详细的信息,我也在‘我们该如何称呼它’上 做了建议。 因为在一个函数中定义的任何函数,可以访问外层函数传进来的参数和变量(这个关系就是闭包),一个IIFE可以用来有效的锁定值和保存状态。 虽然2个例子都使用IIFE锁定变量i的值,但是我觉得前一种例子阅读性更好。 因为IIFE不是‘函数调用自身’,也不是正在被执行的函数。 至于我对invoked的偏爱超过于executed,这样押头韵;我认为IIFE不管是看起来还是听起来都好过IEFE。 所以,就是这,这就是我的想法。

    96730发布于 2019-08-26
  • 来自专栏精通前端

    一文讲透JavaScript闭包与立即执行函数表达式(IIFE

    引言闭包是一种函数的特性,用于捕获和保存其所在作用域的变量,而IIFE是一种用来创建函数作用域的模式。在JavaScript中,我们可以将闭包和IIFE结合使用,但它们并不是彼此依赖的概念。 虽然我们可以在IIFE中使用闭包,但是闭包并不依赖于IIFE的存在。闭包可以与任何函数一起使用,不管是普通函数还是IIFE。 二、深入IIFE的理解2.1、IIFE的概念IIFE是立即执行函数表达式(Immediately Invoked Function Expression)的缩写。 2.2、IIFE的特性IIFE的作用包括:避免全局命名冲突:在IIFE内部定义的变量和函数都是在函数作用域内,不会与全局作用域中的变量冲突。 相对而言,IIFE是一种特殊的函数表达式,它可以立即执行并创建一个独立的作用。通过将代码封装在IIFE内部,我们防止污染全局命名空间,并且可以将变量和函数限定在私有作用域中。

    2.1K41编辑于 2023-11-22
  • 来自专栏Python 爬虫

    【JS逆向百例】某音乐网分离式 webpack 非 IIFE 改写实战

    本次的逆向目标是搜索接口的一个参数 reqId,注意这个参数并不是必须的,本文的主要目的是介绍分离式 webpack,即模块加载器与各个模块不在同一个 JS 文件里时,该如何改写 webpack,以及如何通过非 IIFE webpack 改写 在 K 哥往期的文章已经介绍过 webpack 的改写方法,本次案例 K 哥将会介绍三种方法,也可以分为两种,一种是 IIFE(立即调用函数表达式、自执行函数) 方式,只不过传的参数 ,也就是模块的格式,分为数组和字典两种,第二种是非 IIFE 方式,比较常规的改写方法,看起来也比较容易理解一点。 IIFE,那么这里不再是第 109、202、203 个模块,而是第 0、1、2 个模块,所以在调用模块的时候也要将对应的 109、202、203 改为 0、1、2,完整代码如下所示: var kuwo 传字典 那么同样的 IIFE,我们将 109、202、203 这三个模块组成的字典传入 IIFE,键就依次取名为 109、202、203,值就是对应的函数,那么在调用对应的函数的时候就直接取键名就行了

    1.3K30发布于 2021-11-02
  • 来自专栏Python 爬虫

    爬虫逆向基础,理解 JavaScript 模块化编程 webpack

    IIFE 立即调用函数表达式 IIFE 全称 Immediately-invoked Function Expressions,译为立即调用函数表达式,也称为自执行函数、立即执行函数、自执行匿名函数等, IIFE 主要用来隔离作用域,避免污染。 IIFE 基本语法 IIFE 的写法非常灵活,主要有以下几种格式: 1、匿名函数前面加上一元操作符,后面加上 (): ! () { console.log("I AM IIFE") }(); ~function () { console.log("I AM IIFE") }(); 2、匿名函数后面加上 ("I AM IIFE") }(); 有的时候,我们还有可能见到立即执行函数前面后分号的情况,例如: ;(function () { console.log("I AM IIFE") }()) IIFE 参数传递 将参数放在末尾的 () 里即可实现参数传递: var text = "I AM IIFE"; (function (param) { console.log(param)

    89721发布于 2021-10-21
  • 来自专栏各类技术文章~

    前端模块化基石:commonJS原理浅析

    compile(){ const iife = this.getIIFE() const sandboxFunc = this.createSandbox(iife) ... createSandbox(iife){ const func = new Function('sandbox', `with(sandbox){return ${iife}`) ... createSandbox(iife){ const func = new Function('sandbox', `with(sandbox){return ${iife}`) return compile(){ const iife = this.getIIFE() const sandboxFunc = this.createSandbox(iife) ... compile(){ const iife = this.getIIFE() const sandboxFunc = this.createSandbox(iife) const

    71110发布于 2021-10-09
  • 来自专栏web前端教室

    简单的说下,(function(){...})() 与 (function(){...}()) 有什么区别?

    IIFE写法的好处: 1,普通写法代码多,并且定义和执行不在一起; 2,占用命名空间; 不想给某些函数起名,又想让它立即执行,那怎么办呢? 因为IIFE搞了一个新的作用域,你的代码碰不到全局对象了。 什么是IIFE? 立即执行函数表达式 IIFE(Immediately-invoked function expression)

    1K60发布于 2018-02-07
  • 来自专栏编程微刊

    什么是立即调用函数?

    立即调用函数(Immediately Invoked Function Expression,IIFE)是一种JavaScript中常用的模式,用于创建并立即执行一个函数。 IIFE 的基本语法形式是使用函数表达式创建一个匿名函数,并在函数定义后立即使用括号运算符将其调用。 IIFE 的优点包括: 隔离作用域:通过将代码包装在函数内部,可以创建一个独立的函数作用域,避免变量污染全局命名空间。 模块化开发:IIFE 可以用于实现模块化开发,通过返回公共接口,只暴露需要的功能,同时隐藏内部实现细节。 特别是对于不熟悉 IIFE 模式的人来说,可能需要花费额外的时间来理解代码意图。 作用域限制:立即调用函数创建了一个独立的函数作用域,这可以是一个优点,但也可能导致一些限制。

    57830编辑于 2023-11-07
  • 来自专栏神奇的程序员的专栏

    深入理解立即执行函数

    紧跟在第一组括号后面的第二组括号会立即调用前面的函数表达式,位于IIFE中的代码在其外部是无法访问的。 实现私有变量 IIFE可以返回一个函数引用,当这个函数在IIFE的词法范围外执行,也会创建一个闭包,使函数能够访问局部变量。 之外无法访问函数内部的count变量,除了从IIFE中返回的函数,别处无法读写该变量,这样就能创建真正的私有状态变量。 为了解决命名冲突问题,可以将一段代码封装在一个IIFE中,将一个全局变量(比如Jquery)作为参数传入IIFE,在函数内部,就可以以一个任意的参数名(比如 $)来访问该参数值,我们举个例子来说明下,如下所示 在写通用js代码时,就可以利用IIFE将其包装起来,例如: (function(global) { // 其他代码 })(this); 包装之后,在IIFE内部使用global时在浏览器环境下其值就是

    1.7K30编辑于 2022-04-10
领券