js中两个小括号的用法

转载 2016年08月31日 11:01:31
JavaScript 中,考查如下代码:
Js代码  收藏代码

Java代码  收藏代码
  1. (function()    
  2.  {    
  3.      alert("cftea");    
  4.  })();    



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

可以把上述代码理解为:
Js代码  收藏代码

  
Java代码  收藏代码
  1. function foo()    
  2.    {    
  3.        alert(1);    
  4.    }    
  5.    foo();   




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

Js代码  收藏代码

   
Java代码  收藏代码
  1. function foo()    
  2.     {    
  3.         alert("cftea");    
  4.     }    
  5.     foo();    
  6.          
  7.     (function()    
  8.     {    
  9.         alert("cftea");    
  10.     })();    
  11.          
  12.     (function()    
  13.     {    
  14.         alert("cftea");    
  15.     }());    
  16.          
  17.     void function()    
  18.     {    
  19.         alert("cftea");    
  20.     }()    








用途

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

   
Java代码  收藏代码
  1. ajax.xmlhttp = (...)();     



例子:
Js代码  收藏代码

  
Java代码  收藏代码
  1. function Foo() {    
  2.        var a = 123;    
  3.        this.a = 456;    
  4.        (function() {    
  5.            alert(a); // 123    
  6.            alert(this.a); // undefined    
  7.        })();    
  8.    }    
  9.    var f = new Foo();    



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

Js代码  收藏代码

   
Java代码  收藏代码
  1. function Foo() {    
  2.         var a = 123;    
  3.         this.a = 456;    
  4.         (function(a) {    
  5.             alert(a); // 456    
  6.         })(this.a);    
  7.     }    
  8.     var f = new Foo();    





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

Js代码  收藏代码

   
Java代码  收藏代码
  1. function Foo() {    
  2.         var a = 123;    
  3.         this.a = 456;    
  4.         (function() {    
  5.             alert(a); // 123    
  6.             alert(this.a); // undefined    
  7.             this.b = 789;    
  8.         })();    
  9.         (function() {    
  10.             alert(this.b); // 789    
  11.         })();    
  12.     }    
  13.     var f = new Foo();    
  14.     (function() {    
  15.         alert(this.b); // 789    
  16.     })();    

    同样是先显示 123,然后显示 undefined,然后显示 789,最后又是一个 789。这说明用两个小括号括起来的都是位于一个执行上下文中的,不论这些代码放在哪里。 
     
    再看看: 
     
   
Java代码  收藏代码
  1. function Foo() {    
  2.         (function() {    
  3.             this.b = 789;    
  4.         })();    
  5.         (function() {    
  6.             alert(this.b); // 789    
  7.             var b = 0;    
  8.             alert(b); // 0    
  9.         })();    
  10.     }    
  11.     var f = new Foo();    
  12.     (function() {    
  13.         alert(this.b); // 789    
  14.         alert(b); // 789    
  15.     })();    

    令人意外的是,最后一个 alert(b),结果仍然是 789。 
     
    更深入一步: 
     
   
Java代码  收藏代码
  1. function Foo() {    
  2.         (function() {    
  3.             this.b = 789;    
  4.         })();    
  5.         (function() {    
  6.             alert(this.b); // 789    
  7.             alert(b); // undefined    
  8.             var b = 0;    
  9.             alert(b); // 0    
  10.         })();    
  11.     }    
  12.     var f = new Foo();    
  13.     (function() {    
  14.         alert(this.b); // 789    
  15.         alert(b); // 789    
  16.     })();   

来自:http://www.cnblogs.com/yuzhongwusan/archive/2011/11/09/2243072.html

相关文章推荐

js 两个小括号 ()() 的用法

JavaScript 中,考查如下代码: Js代码   (function()   {       alert("cftea");   })();     ...

【JavaScript】中两个小括号 ()() 是什么意思

function Foo() {var a = 123;this.a = 456;(function() {alert(a); // 123alert(this.a); // undefined})(...
  • claram
  • claram
  • 2011年05月16日 15:08
  • 5921

linux中shell的小括号、大括号的用法区别

Linux中小括号()和大括号{}都是对其中的一串命令进行执行,但有一定的区别,其区别如下: 1 小括号() ①命令组。括号中的命令新开一个子shell程序,括号中的变...

js中两个感叹号的原理与用法分析

在javascript中有时会看到有两个!!的用法。我很少用到(本人在js方面是菜鸟),但是在一些开源框架(如jquery)中经常看到。所以参考网上的相关资料总结了一下它的用法。         Js...

Shell最全大括号{}、中括号[]、小括号()用法实例

1、大括号{ }用法实例 1)纯{ }用法 拓展功能:例如:ls {name1,name2}.sh ;touch {1..3}.sh 代码组织功能:例如:多条命令在当前shell中执行 { cmd1;...

js 大小写 小括号大括号 定义函数 调用函数 递归!!!

今天学了一点点js  感觉有点难

jquery.validate.js用法.doc

  • 2011年12月15日 21:01
  • 56KB
  • 下载

iitraweb+dtree(dtree.js)用法!

  • 2013年01月14日 18:48
  • 698KB
  • 下载

iOS开发:使用Block在两个界面之间传值(Block高级用法:Block传值)

使用Block的地方很多,其中传值只是其中的一小部分,下面介绍Block在两个界面之间的传值:         先说一下思想:         首先,创建两个视图控...
  • win_ann
  • win_ann
  • 2014年07月15日 17:05
  • 340

js基础用法全集.txt

  • 2012年06月05日 12:08
  • 8KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js中两个小括号的用法
举报原因:
原因补充:

(最多只允许输入30个字)