立 即 调用函数 表 达式
用法
[编辑](function() {
// 这里的 语句将 获得新 的 作用 域
})();
(function(a, b) {
// a == 'hello'
// b == 'world'
})('hello', 'world');
开头
a = b + c
;(function() { // 故意 将 分 号 放 在 这里
// 代 码
})();
如此书写,以c(...)
)。
例 子
[编辑]求 值上下 文 (Evaluation context)
[编辑]var v, getValue;
v = 1;
getValue = function() { return v; };
v = 2;
getValue(); // 2
v
赋值时这结果getValue()
var v, getValue;
v = 1;
getValue = (function(x) {
return function() { return x; };
})(v);
v = 2;
getValue(); // 1
此例v
David Herman's
利用 IIFE建立 真正 的 私有 函数 和 变量,并用闭包访问
[编辑]// 'counter' 函数 返 回 一个具有属性的对象, 这里的 属性 就是
// get set等 函数
var counter = (function(){
var i = 0;
return {
get: function(){
return i;
},
set: function( val ){
i = val;
},
increment: function() {
return ++i;
}
};
})();
// 这些调用使用 了 刚才counter得 到 的 属性
counter.get(); // 0
counter.set( 3 );
counter.increment(); // 4
counter.increment(); // 5
如果counter.i
,i
这个counter
i
也会i
并没
术语
[编辑]"arguments.callee
,[16]
参考
[编辑]- ^ 1.0 1.1 1.2 1.3 Alman, Ben. Immediately Invoked Function Expressions. 2010 [4 February 2013]. (
原始 内容 存 档于2013-01-20). - ^ Resig, John. Pro JavaScript Techniques. Apress. 2006: 29. ISBN 9781430202837.
- ^ 3.0 3.1 Osmani, Addy. Learning JavaScript Design Patterns. O'Reilly. 2012: 206. ISBN 9781449334871.
- ^ Baagoe, Johannes. Closing parenthesis in function's definition followed by its call. [19 April 2010]. (
原始 内容 存 档于2011-01-22). - ^ 5.0 5.1 Lindley, Cody. JavaScript Enlightenment. O'Reilly. 2013: 61. ISBN 9781449342883.
- ^ Zakas, Nicholas. Maintainable JavaScript. O'Reilly. 2012: 44. ISBN 9781449327682.
- ^ Crockford, Douglas. Code Conventions for the JavaScript Programming Language. [3 February 2013]. (
原始 内容 存 档于2012-03-05). - ^ "JavaScript Semicolon Insertion: Everything you need to know (页面
存 档备份,存 于互联网档案 馆)", Friday, May 28, 2010 - ^ "Semicolons in JavaScript are optional (页面
存 档备份,存 于互联网档案 馆)", by Mislav Marohnić, 07 May 2010 - ^ Haverbeke, Marijn. Eloquent JavaScript. No Starch Press. 2011: 29–30. ISBN 9781593272821.
- ^ Alman, Ben. simple-iife-example.js. Github. [5 February 2013]. (
原始 内容 存 档于2021-04-14). - ^ 12.0 12.1 Otero, Cesar; Larsen, Rob. Professional jQuery. John Wiley & Sons. 2012: 31. ISBN 9781118222119.
- ^ Herman, David. Effective Javascript. Addison-Wesley. 2012: 44–45. ISBN 9780321812186.
- ^ Zakas, Nicholas C. Mimicking Block Scope. Professional JavaScript for Web Developers. John Wiley & Sons. 2011. ISBN 9781118233092.
- ^ Rettig, Pascal. Professional HTML5 Mobile Game Development. John Wiley & Sons. 2012: 145. ISBN 9781118301333.
- ^ Strict mode. Mozilla JavaScript Reference. Mozilla Developer Network. [4 February 2013]. (
原始 内容 存 档于2013-05-25).
外部 链接
[编辑]- Functions and function scope. Mozilla JavaScript Reference. Mozilla Developer Network. [4 February 2013]. (
原始 内容 存 档于2013-05-25). - Soshnikov, Dmitry. ECMA-262-3 in detail. Chapter 5. Functions.. [4 February 2013]. (
原始 内容 存 档于2021-02-28).