Javascript知识点:IIFE - 马上挪用函数

Immediately-invoked Function Expression(IIFE,马上挪用函数),简朴的明白就是定义完成函数以后马上实行。因而有时候也会被称为“自实行的匿名函数”(self-executing anonymous function)。

IIFE的叫法最早见于Ben Alman的文章。文章中Ben Alman 已诠释得很清晰了,愿望定义自实行函数式罕见的语法错误有两种:

1) function (){ }()

希冀是马上挪用一个匿名函数表达式,结果是进行了函数声明,函数声明必需要有标识符做为函数称号。

2) function g(){ }()

希冀是马上挪用一个签字函数表达式,结果是声清楚明了函数 g。末端的括号作为分组运算符,必需要供应表达式做为参数。
所以那些匿名函数四周运用括号或一些一元运算符的惯用法,就是来指导解析器,指明运算符四周是一个表达式。

根据这个明白,能够举出五类,凌驾十几种的让匿名函数表达式马上挪用的写法:

1)运用括号

( function() {}() );
( function() {} )();
[ function() {}() ];

2)运用一元操作符

~ function() {}();
! function() {}();
+ function() {}();
- function() {}();

3)运用void等操作符

delete function() {}();
typeof function() {}();
void function() {}();

4)运用表达式

var i = function(){ return 10; }();
14.true && function(){ /* code */ }();
15.0, function(){ /* code */ }();
1 ^ function() {}();
1 > function() {}();

5)运用new关键字

new function(){ /* code */ }

31.new function(){ /* code */ }() //假如没有参数,末了的()就不需要了

然则整体来讲,比较罕见的是以下三种写法:

// Crockford's preference - parens on the inside
(function() {
  console.log('Welcome to the Internet. Please follow me.');
}()); 

(function() {
  console.log('Welcome to the Internet. Please follow me.'); 

})(); 

!function() {

  console.log('Welcome to the Internet. Please follow me.'); 

}(); 

实在议论IIFE的若干种写法若干和研讨茴香豆的“茴”字有几种写法一样无聊,但实在不无用途,至少在浏览他人的代码时见到如许的写法不至于不知所云,抑或能够拿出去和小伙伴们装装,马上以为逼格提拔不少。

参考资料:

http://benalman.com/news/2010/11/immediately-invoked-function-expression/(中文译文:http://www.cnblogs.com/TomXu/archive/2011/12/31/2289423.html

http://www.elijahmanor.com/angry-birds-of-javascript-red-bird-iife/(中文译文:http://nuysoft.com/2013/04/15/angry-birds-of-javascript-red-bird-iife/Immediately-invoked%20Function%20Expression

http://www.zhihu.com/question/20249179

    原文作者:lhc
    原文地址: https://segmentfault.com/a/1190000000523767
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞