问题标签 [iife]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
122 浏览

javascript - 可以在 IIFE 中用全局替换 window 吗?

不知何故,这样做会让人感觉有些不对或很脏,但它似乎比使用导出或窗口更具语义性。这个可以吗?

0 投票
8 回答
10591 浏览

javascript - 立即函数 JavaScript

Stoyan Stefanov 在 JavasScript Patterns 中说:“您需要一个即时函数来将所有代码包装在其本地范围内,而不是将任何变量泄漏到全局范围内”第 70 页。

这是他的例子

但肯定因为 days 被定义为一个 var,它只是功能范围吗?立即函数的唯一好处是立即调用该函数。没有范围优势。正确吗?

0 投票
2 回答
3398 浏览

javascript - 立即调用函数表达式 (IIFE) 与否

我看到很多代码,例如:

这会导致匿名函数立即执行。但是,与仅将代码内联相比,这样做的优势是什么?

显然它与函数的范围有关,但是由于该函数是匿名的并且由窗口调用,所以它的范围(即this)是全局的,不是吗?

0 投票
1 回答
68 浏览

javascript - 试图在对象数组中实现一个数组

在 Google Apps JS 中。我想实现一个对象数组,每个对象都有属性和方法。其中一个属性需要是一个对象数组,我希望能够通过使用父数组中的方法来访问这个数组。

到目前为止,我最大的努力是:

当我添加代码来实现子数组时,我得到一个运行时错误,说 addName 不存在。

0 投票
1 回答
1374 浏览

javascript - Javascript 中 IIFE 的作用域

我正在使用一个使用 jsonP 共享跨域信息的脚本。它运作良好,但我需要把它放在 IIFE 中。

这样可行!(我只使用了我的全局脚本的一小部分,只是为了向您展示结构,所以如果那里有任何语法错误,那不是重点)。

但是当我把这段代码放在一个 IIFE(一个自调用函数)中时,我遇到了一些麻烦。

我收到错误 myObj 未定义,错误来自 scriptTag 方法,我真的不明白为什么在添加 IIFE 之前我无法访问此方法,它不应该改变任何东西,它只是避免污染全局命名空间。我认为这只是一个上下文问题,但我需要一个解释。

0 投票
3 回答
1535 浏览

javascript - 为什么这个分组运算符 + 函数立即被调用

我正在研究立即调用函数表达式 (IIFE) 的行为,在此过程中我遇到了以下情况。

我认为第一个只是一个分组运算符,里面有一个函数表达式,没有调用它。第二个是分组运算符以及函数表达式,但现在调用该函数。

我觉得奇怪的是两者都被调用了,这是为什么呢?

当我通过在两者之间插入一个变量声明来打破这两者时,它只是写了 foo. 这是我所期望的。

0 投票
1 回答
110 浏览

javascript - 为什么Javascript“类”实现会用同名的函数声明覆盖类名?

我正在研究 Coffeescript 的输出,试图深入了解幕后发生的事情。当我声明一个新类 Person 时,会创建一个名为 Person 的变量,其中包含一个 IIFE。

让我感到困惑的是,IIFE 本身包含一个名为 Person 的命名函数声明。这会覆盖原始的 Person 变量,还是 Javascript 认为这是一个新的范围?当 doThing 添加到 Person 的原型时,具体指的是哪个对象?

也许我的问题暴露了更深层次的困惑:)

0 投票
3 回答
186 浏览

javascript - javascript中两个模块声明有什么区别?

JavaScript中模块的两个声明有什么区别?一个在函数周围有括号,而另一个没有?

一篇文章说

注意匿名函数周围的 ()。这是语言所要求的,因为以标记函数开头的语句总是被认为是函数声明。包含 () 会创建一个函数表达式。

检查时两者似乎都做同样的事情。

0 投票
1 回答
240 浏览

javascript - 与 IIFE 相比,使用命名函数是否有优势?

我经常看到 IIFE。

我看到一系列未打开的语句,即它们没有被括号封装。

为什么我没有看到一个函数后跟它的调用

当您不需要闭包时立即调用一系列语句,即您不需要持久或静态局部变量?

这个成语/模式有问题吗?它有名字吗?用了吗?

非“小”代码

0 投票
2 回答
181 浏览

javascript - 执行 IIFE 的不同方法?

有没有区别

对比

两者都有效,但我应该什么时候使用它们?