当即执行函数模式是一种语法,可让你的函数在定义后当即被执行,
这种模式本质上就是函数表达式(命名的或者匿名的),在建立后当即执行;
当即执行函数(immediate function)术语不是在ECMAScript标准中定义的,但它很短有助于描述和讨论模式;
这种模式有一些几部分组成:javascript
使用函数表达式定义一个函数(函数声明不能起做用)java
在结尾加上一对括号,让函数当即被执行git
将整个函数包裹在一对括号中(只有在你不将函数赋值给一个变量的时候才须要)web
它能够帮你封装大量的工做而不会在背后遗留任何全局变量。函数
你定义的全部变量都会成员当即执行函数的局部变量,因此你不用担忧这些临时变量会污染全局空间测试
可使用这种技术能够模仿一个私有做用域,用匿名函数做为一个“容器”,“容器”内部能够访问外部的变量,而外部环境不能访问“容器”内部的变量code
能够添加更多的增强模块,移除它们,单独测试它们,容许用户去禁用它们等等
为何要有js当即执行函数,存在的意义是什么ip
当即执行函数一般做为一个单独模块使用。通常没有问题,可是,建议在本身写的当即执行函数前加分号,这样能够有效地与前面代码进行隔离。不然,可能出现意想不到的错误。
js自执行函数前加个分号是什么意思?作用域
最前最后加括号get
(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中当即执行函数