格式:

(function(){
          
//代码
        })();

解释:这是相当优雅的代码(如果你首次看见可能会一头雾水:)),包围函数(function(){})的第一对括号向脚本返回未命名的函数,随后一对空括号立即执行返回的未命名函数,括号内为匿名函数的参数。
来个带参数的例子:

       (function(arg){
           alert(arg
+100);
        })(
20);
       
// 这个例子返回120。

重要用途:可以用它创建命名空间,只要把自己所有的代码都写在这个特殊的函数包装内,那么外部就不能访问,除非你允许

 (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');

 

 

 

 

 

额外看到的一个例子:

 

(function() {
    var k = [];
    return function j() {
        k.push(i);
        j();
    }
})()();

 

 

 

 

 

 

 

 

 

posted on 2009-06-17 23:46  钱途无梁  阅读(914)  评论(1编辑  收藏  举报