码迷,mamicode.com
首页 > 编程语言 > 详细

javascript中的自执行函数

时间:2017-01-03 20:33:30      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:需要   ssi   全局   function   bsp   执行函数   表达   字符串   ...   

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

什么是自执行函数?

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

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

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

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

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

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

  

 

 

 

 


javascript中的自执行函数

标签:需要   ssi   全局   function   bsp   执行函数   表达   字符串   ...   

原文地址:http://www.cnblogs.com/daikefeng/p/6245990.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!