javascript中的自执行函数

Posted 爱coding

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript中的自执行函数相关的知识,希望对你有一定的参考价值。

学习es6的时候遇到了自执行函数,感觉有必要写下来,一方面加深自己的记忆,另一方面还能分享给大家。

什么是自执行函数?

自执行函数就是为了不污染全局变量命名空间的一中匿名函数,相当于自己创建了一个作用域,下面我来说一下它的原理:

function foo() {...}     // 这是定义,Declaration;定义只是让解释器知道其存在,但是不会运行。
foo();                   // 这是语句,Statement;解释器遇到语句是会运行它的。

上面的函数就是传统的函数,它写起来有点啰嗦,而且会污染全局命名空间,这样对我们来说并不友好,所以自执行函数就出现了,写法如下:

(function foo() {...})();
(function foo() {...}());//推荐使用这种形式

上面的代码块就是自执行函数的两种形式,推荐使用下面的这种形式,具体好在哪我也不清楚,也许是因为包裹起来更像封装了一个函数,大家可以这么理解。传统的函数比如:function foo(...){} ,它其实是一种声明,对于解释器来说,就好像你写了一个字符串 "function foo(...){}",它需要使用解析函数,比如 eval() 来执行它才可以。所以把 () 直接放在声明后面是不会执行,这是错误的语法。如何把它变得正确?说起来也简单,只要把 声明 变成 表达式(Expression) 就可以了。也就是上述代码块中的函数。

希望大家能理解,我也就不胜荣幸了。

  

 

 

 

 




以上是关于javascript中的自执行函数的主要内容,如果未能解决你的问题,请参考以下文章

更改页面javascript代码(TamperMonkey)以将键盘笔触发送到父DOM

执行AJAX返回HTML片段中的JavaScript脚本

react js中的自调用函数? (如在常规 javascript 中)

具有获取 json 值的片段中的自定义适配器

R Shiny:如何从数据表中的自定义按钮调用 JavaScript 函数

片段中的自定义列表适配器