问题标签 [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.
javascript - 可以在 IIFE 中用全局替换 window 吗?
不知何故,这样做会让人感觉有些不对或很脏,但它似乎比使用导出或窗口更具语义性。这个可以吗?
javascript - 立即函数 JavaScript
Stoyan Stefanov 在 JavasScript Patterns 中说:“您需要一个即时函数来将所有代码包装在其本地范围内,而不是将任何变量泄漏到全局范围内”第 70 页。
这是他的例子
但肯定因为 days 被定义为一个 var,它只是功能范围吗?立即函数的唯一好处是立即调用该函数。没有范围优势。正确吗?
javascript - 立即调用函数表达式 (IIFE) 与否
我看到很多代码,例如:
这会导致匿名函数立即执行。但是,与仅将代码内联相比,这样做的优势是什么?
显然它与函数的范围有关,但是由于该函数是匿名的并且由窗口调用,所以它的范围(即this
)是全局的,不是吗?
javascript - 试图在对象数组中实现一个数组
在 Google Apps JS 中。我想实现一个对象数组,每个对象都有属性和方法。其中一个属性需要是一个对象数组,我希望能够通过使用父数组中的方法来访问这个数组。
到目前为止,我最大的努力是:
当我添加代码来实现子数组时,我得到一个运行时错误,说 addName 不存在。
javascript - Javascript 中 IIFE 的作用域
我正在使用一个使用 jsonP 共享跨域信息的脚本。它运作良好,但我需要把它放在 IIFE 中。
这样可行!(我只使用了我的全局脚本的一小部分,只是为了向您展示结构,所以如果那里有任何语法错误,那不是重点)。
但是当我把这段代码放在一个 IIFE(一个自调用函数)中时,我遇到了一些麻烦。
我收到错误 myObj 未定义,错误来自 scriptTag 方法,我真的不明白为什么在添加 IIFE 之前我无法访问此方法,它不应该改变任何东西,它只是避免污染全局命名空间。我认为这只是一个上下文问题,但我需要一个解释。
javascript - 为什么这个分组运算符 + 函数立即被调用
我正在研究立即调用函数表达式 (IIFE) 的行为,在此过程中我遇到了以下情况。
我认为第一个只是一个分组运算符,里面有一个函数表达式,没有调用它。第二个是分组运算符以及函数表达式,但现在调用该函数。
我觉得奇怪的是两者都被调用了,这是为什么呢?
当我通过在两者之间插入一个变量声明来打破这两者时,它只是写了 foo. 这是我所期望的。
javascript - 为什么Javascript“类”实现会用同名的函数声明覆盖类名?
我正在研究 Coffeescript 的输出,试图深入了解幕后发生的事情。当我声明一个新类 Person 时,会创建一个名为 Person 的变量,其中包含一个 IIFE。
让我感到困惑的是,IIFE 本身包含一个名为 Person 的命名函数声明。这会覆盖原始的 Person 变量,还是 Javascript 认为这是一个新的范围?当 doThing 添加到 Person 的原型时,具体指的是哪个对象?
也许我的问题暴露了更深层次的困惑:)
javascript - javascript中两个模块声明有什么区别?
JavaScript中模块的两个声明有什么区别?一个在函数周围有括号,而另一个没有?
一篇文章说
注意匿名函数周围的 ()。这是语言所要求的,因为以标记函数开头的语句总是被认为是函数声明。包含 () 会创建一个函数表达式。
检查时两者似乎都做同样的事情。
javascript - 与 IIFE 相比,使用命名函数是否有优势?
我经常看到 IIFE。
我看到一系列未打开的语句,即它们没有被括号封装。
为什么我没有看到一个函数后跟它的调用
当您不需要闭包时立即调用一系列语句,即您不需要持久或静态局部变量?
这个成语/模式有问题吗?它有名字吗?用了吗?
非“小”代码
javascript - 执行 IIFE 的不同方法?
有没有区别
对比
两者都有效,但我应该什么时候使用它们?