Javascript 中小括号有5 种语义

语义1:函数声明时参数表

1 function func(arg1, arg2){ 
2    // ... 
3  } 
 
 
语义2:和一些语句联合使用以达到某些限定作用

1 // 和 for in 一起使用 
 2 for(var a in obj){ 
 3   // ... 
 4 } 
 5  
 6 // 和 if 一起使用 
 7 if(boo){ 
 8   //... 
 9 } 
10  
11 // 和 while 一起使用 
12 while(boo){ 
13   // ... 
14 } 
15  
16 // 和 do while 一起使用 
17 do{ 
18   // ... 
19 }while(boo)

注意:在与 if、while 及 do while 一起使用时小括号会将其中的表达式结果隐式的转换成布尔值。见无处不在的隐式类型转换 。
 
 
 
语义3:和 new一起使用用来传值(实参)
 
// 假设已经定义了类 Person,它有两个字段姓名(name),年龄(age) 
var p1 = new Person('Jack', 26);  
 
 
语义4:作为函数或对象方法的调用运算符(如果定义了参数也可与语义3一样传实参)

// 假设已经定义了函数 func 
func(); 
 
// 假设已经定义了对象 obj,且拥有 func 方法 
obj.func();  
这里提下 typeof 运算符,有人喜欢这么使用:
 
typeof(xxx);

请注意 typeof 后的小括号并非语义4(即不是函数调用),而是后面提到的语义5。我使用typeof一般不加后面的小括号。
 另见具名函数的四种调用方式。
 
 
 
语义5:强制表达式运算
 
关于语义5,大家最熟悉的莫过于使用 eval 解析 JSON

1 function strToJson(str){ 
2      // eval 中字符串两旁加了强制运算符() 
3      var json = eval('(' + str + ')');  
4      return json; 
5 } 
 又如使用较多的是匿名函数自执行

1 (function(){ 
2   // ... 
3 })();  
注意,以上代码第一对小括号是语义5,第二对则是语义4。

Javascript 中的小括号 “()” 的多义性的更多相关文章

  1. Python中的小括号()、中括号[]、花括号{}区别

    Python中最常见括号的区别: 在Python语言中最常见的括号有三种,分别是:小括号().中括号[].花括号{}:其作用也不相同,分别用来代表不同的Python基本内置数据类型. Python中的 ...

  2. Javascript小括号“()”的多义性

    摘要:本文主要介绍JavaScript中小括号有五种语义. Javascript中小括号有五种语义 语义1,函数声明时参数表 function func(arg1,arg2){ // ... } 语义 ...

  3. 关于 JavaScript 中一个小细节问题 (在控制台中直接 {Name:'王尼玛',Age:20} 对象报错问题)

    在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象  ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚 ...

  4. javaScript中的小细节-局部作用域中的var

    javaScript中var是很神奇的,在局部作用域中,var a = b = c = 1;是不一样的,a为使用var声明的变量,而b和c则是全局下的,此类变量被称为隐式全局变量:var a = 1; ...

  5. 私人定制javascript中函数小知识点

    函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在 ...

  6. 私人定制javascript中对象小知识点(Only For Me)

    废话不多讲,先上笑话,然后再,.看懂这个的说明你的节操已经不再了. 晚饭后去理发店理发...割了吧...老板问我怎么剪,我悠悠的来一句往帅了剪...高潮往往令人想不到....旁边一在焗油烫头发的大妈说 ...

  7. javaScript中的小细节-script标签中的预解析

    首先介绍预解析,虽然预解析字面意思很好理解,但是却是出坑出的最多的地方,也是bug经常会有的地方,利用好预解析的特性可以解决很多问题,并且提高代码的质量及数量,浏览器在解析代码前会把变量的声明和函数( ...

  8. 私人定制javascript中数组小知识点(Only For Me)

    先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好, ...

  9. Linux中的小括号和大括号,${}/$()/()/{}/${var:-string}/${var:=string}/${var:+string}/${var:?string}/${var%pattern}/${var#pattern}/${var%%pattern}/${var##pattern}

    简单记录一下大小括号在Linux中的用处. 1.${var},这是Linux中变量的原形.所以$var,别忘记了你的本来面目. # a= # echo $a # echo ${a} # echo ${ ...

随机推荐

  1. Python字符串的encode与decode研究心得 乱码问题解决方法

    以下摘自:http://www.jb51.net/article/17560.htm 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“\xe4\xb8\xad\xe6\x ...

  2. linux驱动模型<输入子系统>

    在linux中提供一种输入子系统的驱动模型,其主要是实现在input.c中. 在输入子系统这套模型中,他把驱动分层分类.首先分为上下两层,上层为input.c .下层为驱动的实现,下层分为两部分,一部 ...

  3. Friends(老友记)(六人行)相关资源

    迅雷账号:104303980 老友记 Friends 的所有种子: http://www.ttmeiju.com/meiju/Friends.html 老友记(friends)高清(720p)+字幕 ...

  4. Tomcat配置https及访问http自动跳转至https

    https介绍:   HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全 ...

  5. 每天一个小算法(Shell Sort3)

    希尔算法自己编了一个,循环很多,很不美观,不过运行正确: c语言实现: #include <stdio.h> #include <stdlib.h> #define LEN 2 ...

  6. 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台

    [原][FAQ03891] 如何在User版本开启串口(Uart),抓取上层Log,开启输入控制台 2014-11-26阅读1369 评论0 FAQ Content [Description]如何在U ...

  7. [HDOJ1043]Eight(康托展开 BFS 打表)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 八数码问题,因为固定了位置所以以目标位置开始搜索,把所有情况(相当于一个排列)都记录下来,用康托 ...

  8. Javascript学习-闭包

    看的这篇 http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html 各种专业文献上的"闭包" ...

  9. Asp.Net生命周期系列四

    上回我们说的当一个Http请求来到HttpModule这里的时候,Asp.Net内部并未对这个Http请求做出任何的处理,我们可以对这个Http请求添加一些我们需要的信息,以方便我们控制这个Http请 ...

  10. WCF常见异常-The maximum string content length quota (8192) has been exceeded while reading XML data

    异常信息:The maximum string content length quota (8192) has been exceeded while reading XML data 问题:调用第三 ...