定义
立即执行函数模式是一种语法,可以让你的函数在定义后立即被执行,
这种模式本质上就是函数表达式(命名的或者匿名的),在创建后立即执行;
立即执行函数(immediate function)术语不是在ECMAScript标准中定义的,但它很短有助于描述和讨论模式;
这种模式有一些几部分组成:
使用函数表达式定义一个函数(函数声明不能起作用)
在结尾加上一对括号,让函数立即被执行
将整个函数包裹在一对括号中(只有在你不将函数赋值给一个变量的时候才需要)
功能
它可以帮你封装大量的工作而不会在背后遗留任何全局变量。
你定义的所有变量都会成员立即执行函数的局部变量,所以你不用担心这些临时变量会污染全局空间
可以使用这种技术可以模仿一个私有作用域,用匿名函数作为一个“容器”,“容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量
可以添加更多的加强模块,移除它们,单独测试它们,允许用户去禁用它们等等
为什么要有js立即执行函数,存在的意义是什么
注意点
立即执行函数通常作为一个单独模块使用。一般没有问题,但是,建议在自己写的立即执行函数前加分号,这样可以有效地与前面代码进行隔离。否则,可能出现意想不到的错误。
js自执行函数前加个分号是什么意思?
写法
-
最前最后加括号
(function(){alert(1);}());
JSLINT推荐这种写法
-
function外面加括号
(function(){alert(1);})();
目前很多比较好的js library 使用的都是第二种方式。
比如: web 图形绘制的: git , draw2d ,.... -
function前面加运算符,常见的是!与void
!function(){alert(1);}(); void function(){alert(2);}();
在function前面加!、+、 -甚至是逗号等到都可以起到函数定义后立即执行的效果,而()、!、+、-、=等运算符,都将函数声明转换成函数表达式,消除了javascript引擎识别函数表达式和函数声明的歧义
js中立即执行函数
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。