Questions tagged «iife»

在Javascript中,IIFE代表立即调用的函数表达式:定义后立即被调用的函数表达式,例如(function(){/ * code * /})();





19
为什么需要在同一行上调用匿名函数?
我读了一些关于闭包的文章,到处都看到了,但是没有明确的解释它是如何工作的-每当我被告知要使用它时……: // Create a new anonymous function, to use as a wrapper (function(){ // The variable that would, normally, be global var msg = "Thanks for visiting!"; // Binding a new function to a global object window.onunload = function(){ // Which uses the 'hidden' variable alert( msg ); }; // …

3
立即函数调用语法
有一个JSLint选项,实际上是The Good Parts之一,它“ [需要]减少立即调用的次数”,这意味着构造 (function () { // ... })(); 而是需要写成 (function () { // ... }()); 我的问题是-谁能解释为什么第二种形式可能会更好?它更具弹性吗?容易出错?与第一种形式相比,它有什么优势? 自问了这个问题之后,我开始理解在功能值和功能值之间形成清晰的视觉区别的重要性。考虑一下立即调用的结果在赋值表达式的右侧的情况: var someVar = (function () { // ... }()); 尽管从语法上讲,最外面的括号是不必要的,但是括号开头预先表明了所分配的值不是函数本身,而是函数被调用的结果。 这类似于Crockford关于构造函数的大写的建议-旨在作为查看源代码的任何人的视觉提示。

4
自动执行匿名JavaScript函数的括号位置?
最近,我将json2.js的当前版本与项目中使用的版本进行了比较,并发现函数表达式的创建和自我执行方式有所不同。 用于将匿名函数包装在括号中然后执行的代码, (function () { // code here })(); 但现在它将自动执行的函数包装在括号中。 (function () { // code here }()); 有通过CMS在接受答案的注释解释JavaScript的封装匿名函数的语法是“既:(function(){})();和(function(){}());有效。” 我想知道有什么区别吗?前者是否通过留下全局匿名函数来占用内存?括号应位于何处?

6
此JavaScript模式称为什么,为什么使用它?
我正在研究THREE.js,并注意到一种定义函数的模式,如下所示: var foo = ( function () { var bar = new Bar(); return function ( ) { //actual logic using bar from above. //return result; }; }()); (实施例见光线投射方法这里)。 这种方法的正常变化如下所示: var foo = function () { var bar = new Bar(); //actual logic. //return result; }; 将第一个版本与正常版本进行比较,第一个版本的不同之处在于: 它分配一个自动执行功能的结果。 它在此函数内定义了一个局部变量。 它返回包含使用局部变量的逻辑的实际函数。 …

2
通过导入ES6模块来加载和使用旧版JS模块(例如IIFE)
对于具有旧版本的应用程序中的某些库代码,我具有IIFE函数,这些代码需要适用于IE10 +(无需加载ES6模块等)。 但是,我开始开发一个将使用ES6和TypeScript的React应用,并且我想重用我已经拥有的代码而不复制文件。经过一番研究,我发现我想使用UMD模式来允许这些库文件既可以作为<script src=*>导入工作,又可以让React应用程序通过ES6模块加载来导入它们。 我想出了以下转换: var Utils = (function(){ var self = { MyFunction: function(){ console.log("MyFunction"); } }; return self; })(); 至 (function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : typeof define === 'function' && define.amd ? define(['exports'], factory) : (factory((global.Utils = …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.