JavaScript 中的自执行匿名函数

来源:互联网 发布:声音鉴定软件 编辑:程序博客网 时间:2024/05/17 09:17

JavaScript 中的自执行匿名函数
格式:
(function (){
// code
})();

解释:这是相当优雅的代码,包围函数(funciton(){}) ();的第一对括号向脚本返回未命名的函数(i.e. return function (){// code } ),随后一对空括号立即执行返回的未命名函数(i.e. function (){// code } ),括号内为匿名函数的参数。
来个带参数的例子:
(function(arg){
alert(arg+100);
})(20);
// 这个例子返回 120

重要用途:

匿名自执行函数有很多用处,主要是用于封装,比如看jquery或者dojo的源码发现它们都是封装在匿名自执行函数中,这样就可以做到页面加载时自动初始化(example),而且向外公开它想公开的属性和方法,而用到的临时变量可以安全封闭在匿名函数内。
可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许

(function (){
  function $(id){
  return document.getElementById(id);
  }
  function _addClass(id,className,classValue){
   $(id).style.className=classValue;
   
  }
  
  window['mySpace']={};
  window['mySpace']['addClass'] = _addClass;
})();

上面的例子就可以用这种伪命名空间封装并保护自己的所有函数、对象和变量。而且,由于它们位于同一个函数中,所以可以互相引用。
为了对受保护的代码进行全局化,随后的一对括号告诉浏览器立即执行返回的匿名函数,而且在执行期间将 _addClass()赋值给了window
的一个方法,这样在外部只能执行addClass而_addClass被保护起来了。我们可以这样调用它:mySpace.addClass('oneId','font-width','bold');