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. Linear Regression

    大学时候学物理实验的时候接触过线性回归,现在忘记了...还得重新拾起来.学习不扎实耽误了多少时光... sigh Suppose that you time a program as a functi ...

  2. CentOS 7快速搭建Nodejs开发环境

    Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.学习Nodejs首先需要会安装环境.这里我介绍如 ...

  3. Linux系统管道命令符

    管道命令符“|”的作用是将前一个命令的标准输出作为后一个命令的标准输入,格式为“命令A | 命令B” 以下实例中,通过grep命令搜索关键字“/sbin/nologin”在/etc/passwd中查找 ...

  4. SSIS ->> Event Handler

    Event Handler支持在某个事件触发的时候定义好处理该事件的逻辑,比如错误事件触发是该怎么处理.它跟Control Flow界面相似,就好像执行了另外一个包一样.Event Handler不仅 ...

  5. CentOS 快速安装pip

    python的很多组件都必须依靠pip来安装,比如elasticsearch驱动.postgres驱动 Python2.7以后的版本自带pip,centos6.5之前yum自带的python为2.6, ...

  6. 常用WinPE

    微PE工具箱:http://www.wepe.com.cn/ 绝对PE工具箱:http://dl.pconline.com.cn/download/64736.html 通用PE工具箱:http:// ...

  7. 没有显示器且IP未知的情况下登录树莓派

    如果是没有显示器操作树莓派,可能会不知道树莓派有线网卡自动分配到的IP地址,不知道登录到哪儿.以下提供详细操作步骤解决这个问题. 网段扫描法这个是推荐的办法.网段扫描工具很多,推荐一个Advanced ...

  8. 配置Tomcat 中文字符集问题

    找到Tomcat安装路径下的conf文件夹下的server.xml配置文件,修改配置Tomcat端口的标签"Connector",添加URIEncoding属性,代码如下: < ...

  9. Android--动态添加控件

            [html]      [html]   package com.mrzhu.edittest;      import android.app.Activity;   import ...

  10. POJ (线段树) Who Gets the Most Candies?

    这道题综合性挺强的,又牵扯到数论,又有线段树. 线段树维护的信息就是区间中有多少个人没跳出去,然后计算出下一个人是剩下的人中第几个. 我在这调程序调了好久,就是那个模来模去的弄得我头晕. 不过题确实是 ...