问题标签 [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 的 Javascript MVC 和潜在的依赖问题
我正在尝试创建自己的简单且小型(观察者)MVC 示例,并尝试使用 IIFE 为我的模型和控制器创建隐私。由于控制器在调用时需要模型对象,因此我不相信这种方法。
我创建了一个工作小提琴,展示了我正在尝试做的事情,但是在这种情况下首先调用的模型依赖于模型。我想将控制器和模型放在不同的文件中以便于管理,但由于这种依赖性,我不知道我是否可以这样做。
有没有办法解决这个问题或对这类事情有更好的解决方案?
(代码摘录)
javascript - JavaScript 中的立即调用函数表达式 (IIFE) - 传递 jQuery
我有以下代码,我知道它是一个 IIFE。但是,我一直无法理解 (jQuery) 和 ($) 是什么。我知道这与将 jQuery 的引用传递给 IIFE 有关,但有人可以清楚地解释我的目的吗?感谢您的帮助和时间:-)
javascript - 如何简洁地分配并立即调用函数变量?
以下是在闭包中定义匿名函数,调用该函数,然后忘记它的方法:
这用于在不向脚本添加大量内容的情况下保持有限的范围(IIFE:立即调用函数表达式)。
如果您希望立即执行一个函数,同时仍保留该函数以供将来使用,如下所示:
这适用于我测试过的浏览器(Chrome、FF、IE8、IE10),但这不会通过 JSLint(错误调用)。这样做有兼容性问题吗?
有没有一种方法可以实现 JSLint 的善意?
javascript - IIFE 中的函数引用不可用?
如果我运行以下命令:
它在 Chrome 中抛出“TypeError: undefined is not a function”,在 Firebug 中抛出“TypeError: fn is not a function”。
不fn
应该在这个范围链中可用,而不必这样做window.fn
?
奇怪的是,如果我运行:
然后它按预期运行:fn
被记录为一个函数,并且在 Chrome 或 Firefox 中都没有引发错误。
这让我觉得很傻,就像我不应该声称了解 JS。
javascript - 为什么立即调用函数表达式 (IIFE) 与自执行匿名函数不同?
很明显,在 EcmaScript 中,函数在被调用时会创建一个新的执行上下文。函数内定义的所有变量和函数只能在该函数范围内访问。但是当我们使用闭包时,变量和函数可能会在该上下文之外被访问。IIFE 是一个立即调用的函数表达式。很简单。
但是为什么 IIFE 与自执行匿名函数不同,我并不完全清楚!?
javascript - 使用自调用函数进行数组初始化
我正在尝试使用自调用函数初始化一个数组,为了简单起见,假设初始值是从 0 到 4 的数字的平方。new
关键字创建新对象,因此可以使用this.x
或访问新创建对象的字段this[x]
在 IIFE 主体内,跟在new
关键字之后。代码是:
现在,您可以访问变量arr
like的相应字段arr[4]
,并获取16
。如果您只使用 like 处理一个对象,那很好arr
,但是一旦您尝试将其视为数组,您就会遇到问题。即,您不能reduce
对它应用类似的功能:
那是因为arr
真的是一个对象,而不是一个数组:
所以这是我的问题:如何在这种方法中避免这种行为?如何让 JavaScript 将这个新创建的对象解释为数组?
javascript - JavaScript 中的“x = x || {}”技术是什么——它如何影响这个 IIFE?
首先,一个伪代码示例:
像这样调用:
我的问题:
- 什么是技术名称/描述:
window.FOO = window.FOO || {}
?
我了解代码的作用...请参阅下面的询问原因。
问的原因:
我这样调用传入的全局变量:
......但我只是不喜欢称那个小写“ foo
”,考虑到全局被称为大写FOO
......它看起来很混乱。
如果我知道这种技术的技术名称,我可以说:
我看过一个最近的(很棒的)例子,他们称之为“ exports
”:
我想我只是想标准化我的编码约定......我想了解专业人士的工作以及他们的想法(这就是我在这里问的原因)!
javascript - IIFE 不会立即调用
在下面的代码片段中,IIFE init() 没有调用。如果需要,我可以发布任何其他代码。
这是一个下拉菜单。我正在测试,$Frame.Support()
所以我很确定这与它有关,或者更多的是我更改代码结构的方式,以便它现在成为方法中的参数。
javascript - 创建一个 JS 类:IIFE vs 返回原型
让我们看两个示例,我将在其中尝试解释我想要理解的内容。
和:
让我们看看!,这两个类都是作为函数表达式创建的,并且都同样工作。它们之间的唯一区别是: 第一个返回 Car 函数及其原型属性。第二个工作返回 Car 函数,避免原型属性,而是使用 IIFE。
return Car.prototype;
使用和避免 IIFE 和使用return Car;
使用 IIFE (类声明末尾的括号)有什么区别。
javascript - 函数表达式前面的 JavaScript 加号
我一直在寻找有关立即调用函数的信息,在某个地方我偶然发现了这个符号:
有人可以向我解释+
函数前面的标志是什么意思/作用吗?