JS中的自执行函数
在跟着JQuery学习建立自己的JS组件基础一文中,我们接触了自执行函数
自执行函数IIFE,是 immediately invoked function expression 的首字母缩写,换另外一种说法就是立即执行函数。
它可以避免变量污染和方法污染,在自定义组件时非常有用。
怎样才算是自执行函数
(function() { // todo })();
如上,就是一个最基础的自执行函数
其中()圆括号起了关键性作用,圆括号在js中有多种用途,如:
1. 运算优先级 (1+2) * 3
2. 函数声明 function foo(){}
3. 组成特定语句 if() while()等
4. 匿名函数的一种声明方式
在声明匿名函数时,可以有
var foo = function(){}
setTimeout(function(){}, 10);
(function(){})
自执行函数就是利用第四点实现了初始,然后通过后面紧跟(),调用它
(function(){})()
就类似下面的代码
function foo(){}; foo();
既然知道了,()的作用是声明,一元操作符也可以实现相同的效果,于是就有了
+function(){}();
-function(){}();
!function(){}();
~function(){}();
void function(){}();
等等方式,不过既然使用括号用的多,咋们就约定使用括号进行自执行函数声明,避免使用其他,这其中还有另外一个原因,就是一元操作符,会导致返回结果发生改变
如:-function(){ return 1}(); // 返回 -1
所以尽量避免其他的几种写法,当然遇到这种写法也就知道它是什么意义了,别被唬到了。。。
另外最后在建议一个,在匿名函数前,可以添加一个分号,避免组件在和其他代码压缩时,发生错误
; (function(){})();
比如,一段js代码:
var a它忘了写;,在有换行符时,运行没什么问题,当我们压缩之后就会变成 var a(function(){})();这样原来的语义就发生变化,或者发生语法解析错误了。
- 点赞
- 收藏
- 关注作者
评论(0)