您的位置:首页 > Web前端 > JavaScript

js中两个小括号的用法

2016-08-31 11:01 197 查看
js 两个小括号 ()() 的用法

JavaScript 中,考查如下代码:

Js代码  收藏代码

Java代码  


(function()    
 {    
     alert("cftea");    
 })();    

其实这段代码的意思就是执行这个匿名函数,弹出提示框,内容为“cftea”。

可以把上述代码理解为:

Js代码  收藏代码

  

Java代码  


function foo()    
   {    
       alert(1);    
   }    
   foo();   

其实相同的功能还有另外两种写法,我们一并列出来如下:

Js代码  收藏代码

   

Java代码  


function foo()    
    {    
        alert("cftea");    
    }    
    foo();    
         
    (function()    
    {    
        alert("cftea");    
    })();    
         
    (function()    
    {    
        alert("cftea");    
    }());    
         
    void function()    
    {    
        alert("cftea");    
    }()    

用途

说了这么多,这东西到底有什么用呢?它可以立即执行一段代码,并把结果赋给变量;打破我们常规的先写函数,再调用的流程,简化书写。

Js代码  收藏代码

   

Java代码  


ajax.xmlhttp = (...)();     

例子:

Js代码  收藏代码

  

Java代码  


function Foo() {    
       var a = 123;    
       this.a = 456;    
       (function() {    
           alert(a); // 123    
           alert(this.a); // undefined    
       })();    
   }    
   var f = new Foo();    

以上代码,先显示 123,再显示 undefined,说明 alert(this.a); 这句中 this 是指本 function 的,而不是其外部 function 的。如果要使用外部的成员,可使用参数的形式传入:

Js代码  收藏代码

   

Java代码  


function Foo() {    
        var a = 123;    
        this.a = 456;    
        (function(a) {    
            alert(a); // 456    
        })(this.a);    
    }    
    var f = new Foo();    

很好理解,再看看下面的:

Js代码  收藏代码

   

Java代码  


function Foo() {    
        var a = 123;    
        this.a = 456;    
        (function() {    
            alert(a); // 123    
            alert(this.a); // undefined    
            this.b = 789;    
        })();    
        (function() {    
            alert(this.b); // 789    
        })();    
    }    
    var f = new Foo();    
    (function() {    
        alert(this.b); // 789    
    })();    

    同样是先显示 123,然后显示 undefined,然后显示 789,最后又是一个 789。这说明用两个小括号括起来的都是位于一个执行上下文中的,不论这些代码放在哪里。 

     

    再看看: 

     

   

Java代码  


function Foo() {    
        (function() {    
            this.b = 789;    
        })();    
        (function() {    
            alert(this.b); // 789    
            var b = 0;    
            alert(b); // 0    
        })();    
    }    
    var f = new Foo();    
    (function() {    
        alert(this.b); // 789    
        alert(b); // 789    
    })();    

    令人意外的是,最后一个 alert(b),结果仍然是 789。 

     

    更深入一步: 

     

   

Java代码  


function Foo() {    
        (function() {    
            this.b = 789;    
        })();    
        (function() {    
            alert(this.b); // 789    
            alert(b); // undefined    
            var b = 0;    
            alert(b); // 0    
        })();    
    }    
    var f = new Foo();    
    (function() {    
        alert(this.b); // 789    
        alert(b); // 789    
    })();   

来自:http://www.cnblogs.com/yuzhongwusan/archive/2011/11/09/2243072.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: