IIFE
2016-05-14 09:06
295 查看
Immediately Invoked Function Expression
立即执行函数表达式
'use strict'; var a = 2; (function foo(){ var a = 3; console.log(a); // 3 })(); console.log(a); // 2
第一个()将函数变成表达式
第二个()执行了这个函数
立即执行函数和普通的函数一样,在自己的函数内声明的变量会覆盖外层词法作用域声明的变量
最好使用具名函数
// the same (function bar(){ console.log(a); // 2 }()); // 在自己的词法作用域内找不到a,所以找上一层作用域的a,找到,拿来用
进阶用法
'use strict'; var a = 2; (function IIFE(global){ var a = 3; console.log(a); // 3 console.log(global.a); // 2 })(window); console.log(a); // 2
因为觉着方便,一直在node里调试,结果你懂的
window is not defined
我一定是傻了 >_
还有一种传参
《你不知道的JavaScript》书里IIFE还有一种变化的用途是倒置代码的运行顺序,将需要运行的函数放在第二位,在IIFE执行之后当作参数传递进去。这种模式在UMD(Universal Module Definition)项目中被广泛使用。
我嚼着就是把函数当作参数穿进去,还是传参,只不过传的函数而已
'use strict'; var a = 2; (function( def ){ def(window); })(function def(global){ var a = 3; console.log(a); console.log(global.a); }); // 3 // 2
相关文章推荐
- Mootools 1.2教程 函数
- autoit InputBox 函数
- 文件遍历排序函数
- Oracle 函数大全[字符串函数,数学函数,日期函数]第1/4页
- ASP下经常用的字符串等函数参考资料
- PostgreSQL教程(五):函数和操作符详解(1)
- DOS批处理 函数定义与用法
- asp Chr 函数 数字转字母的方法
- Lua中的函数精讲笔记
- Lua中的闭合函数、非全局函数与函数的尾调用详解
- Lua中调用C++函数示例
- Lua实现split函数
- Lua常用时间函数使用实例
- Lua函数与字符串处理简明总结
- Lua学习笔记之表和函数
- Lua中实现sleep函数功能的4种方法
- Lua函数用法研究
- Lua基础教程之赋值语句、表达式、流程控制、函数学习笔记
- Sql Server中REPLACE函数的使用
- PowerShell函数简明教程