问题标签 [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 - 为什么这个立即调用的方法会返回窗口对象?
为什么立即调用的方法将window
对象返回为this
,
但是当稍后执行时,该方法返回对象o
(正如我在两种情况下所期望的那样)?
javascript - JS IIFE 和带参数的内部函数
我开始更详细地研究 JS,在测试了一些代码之后,我想出了这种情况:
控制台的输出如下:
有人可以解释一下这种行为,因为我无法理解它。
我知道第一个函数是 IIFE,它在创建时立即执行。我唯一的问题是传递的参数如何传递给内部函数?
提前感谢您的信息和评论
javascript - 对象字面量和在 IIFE 中返回对象的函数之间有什么区别和优点/缺点?
因此,为了澄清这个问题,我了解 IIFE 和对象文字是什么。但是,我不确定这两个示例之间的区别是什么(除了一个是函数,另一个是对象文字):
示例 1:
示例 2:
两个示例都返回相同的结果,并且(几乎)以相同的方式调用。但:
1)它们之间的根本区别是什么?
2)使用其中一个有好处吗?
3)我已经看到代码(在第二个示例中)return myStuff.arbitraryValue
与return myStuff().arbitraryValue
. 这怎么可能?
4)如果我只是想避免全局冲突并编写干净的代码,这是否矫枉过正?
5)这些例子中的任何一个都被认为是“最佳实践”,还是有其他选择?
提前谢谢了!
javascript - 需要帮助来理解这个立即调用的函数示例
这是我从教程中找到的一段代码,但我无法清楚地理解它的目的。这是示例:
应用程序.js
我感到困惑的第一部分是为什么使用与参数相同的参数调用它?
第二个疑问是为什么如果没有“oojs”应该以对象字面量作为参数调用函数?这是必要的吗?
最后为什么它应该返回与其函数名(oojs)相同的原因。
也许这是一种创建对象的方法,但如果有人可以帮助我解决这个问题,我将不胜感激。
javascript - 我怎样才能使这个对象模式工作?
这种模式真的让我的船漂浮,但我怎样才能让它充当一个基类而不使用'new','this'或'Object.create()'?可能吗?
swift - Swift 语言中的 IIFE
在 javascript 中,我们经常使用 IIFE。就像是
Swift 中有闭包,函数是第一类对象。我的问题是:Swift 中是否有等效的 IIFE?
javascript - 窗口事件侦听器内部的回调不起作用
当我尝试运行它时,它根本不起作用。我不断得到 undefined is not a function,这是为什么呢?它是否与它在 eventListener 中的某些东西有关?或者我在函数内部传递了参数?太疯狂了,我已经使用了很多次了,只是现在在 eventListener 中似乎遇到了问题。
任何人都可以在这个问题上启发我吗?
现实生活中的例子
javascript - 如何在嵌套的 IIFE 模块中引用父 JavaScript 函数?
取下面的代码......在setTimeout
匿名函数中,引用该alert.hide()
方法的正确方法是什么?将整个调用写成 是正确的admin.alert.hide();
吗?或者有没有更好的方法来引用admin
而不必直接调用它?
javascript - 在 IIFE 中测试 javascript
我的团队负责人希望我将我的 js 代码包装在一个 IIFE 立即调用的函数表达式中。我不知道如何在我的茉莉花规格文件中进行间谍活动。
我将如何监视以下内容:
spyOn(window,'function_1')
不起作用。将窗口传递到 IIFE 不起作用。
两者都尝试(x=function()...
,(function x() ...
然后spyOn(x,'function_1')
也不起作用。
我在网上找不到任何关于此的内容。
javascript - JavaScript 砰“!” 函数与前导分号“;” IIFE
Airbnd 建议我这样做:
因为:
这确保了如果格式错误的模块忘记包含最后的分号,则在连接脚本时不会在生产中出错。
bang 让我可以绕过语言的语法规则:
当连接其他模块时,爆炸似乎起到了作用:
然而,它似乎实际上并不“安全”,因为如果其他人在他的脚本末尾没有分号:
似乎以分号开头的 IIFE 更好。
我错过了什么吗?使用 bang "!" 真的可以接受吗?函数或前导分号“;” IIFE 真正优越是因为它们的连接方式吗?