一个可以手写原型链的男人

Immediately-invoked function expression(IIFE)

立即调用函数表达式,是一种利用JavaScript函数生成新作用域的编程方法。

立即调用函数表达式可以令其函数中声明的变量绕过JavaScript的变量置顶声明规则,还可以避免新的变量被解释成全域变量或函数名占用全域变量名的情况。与此同时它能在禁止访问函数内声明变量的情况下允许外部对函数的调用。有时,这种编程方法也被叫做“自执行(匿名)函数”,但“立即调用函数表达式”是语义上最准确的术语。

立即调用函数表达式拥有数种不同的写法。最常见的一种是将函数表达式字面量至于圆括号(分组运算符)之内,然后使用圆括号调用函数。

(function() {
  // 这里的语句将获得新的作用域
})();

以上信息来之wikipad。

(function(){
    //模块代码
}())

这种第一匿名函数并立即在单个表达式中调用他的写法非常常见,已经成为一种惯用写法了。注意上面代码的圆括号的用法,function之前的左圆括号是必须的,因为如果不写这个左圆括号,javascript解释器会试图将关键字function解析为函数声明语句。使用圆括号javascript解释器才会正确地解析为函数定义表达式。使用圆括号是习惯用法,尽管有些时候没有必要也不应当省略。

There are other ways to enforce a function expression:

!function () { /* ... */ }();
~function () { /* ... */ }();
-function () { /* ... */ }();
+function () { /* ... */ }();

In contexts where an expression is expected, wrapping in parentheses is not necessary:

var f = function () { /* ... */ }();
true && function () { /* ... */ }();
0, function () { /* ... */ }();

构造函数

new function(){ /* code */ }
new function(){ /* code */ }() // Only need parens if passing arguments

特殊运算符

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

《Immediately-invoked function expression(IIFE)》

点赞

发表评论