[转] Javascript 中的小括号 “()” 的多义性

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。

时间: 2024-11-10 07:07:40

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

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

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 一起使用  1

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

先上笑话,1.刚看到一个游泳的,想起公司组织去三亚旅游,老板跳海里,各种挣扎,捞上来老板第一句话:我记得我会游泳的啊. 2.媳妇说:老公对不起,我把你新买的自行车撞散架了! 老公:没事宝贝,你若安好,便是晴天! 媳妇说:老公你太有诗意了. 老公:滚犊子,安不好我整死你! 数组的概念 javascript数组是值得有序集合,不过它实属一个javascript对象的特殊形式,这是一个很重点的定性. 创建数组 1.var a=new Array();//等同于[] 2.var a=new Array(

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

废话不多讲,先上笑话,然后再,.看懂这个的说明你的节操已经不再了. 晚饭后去理发店理发...割了吧...老板问我怎么剪,我悠悠的来一句往帅了剪...高潮往往令人想不到....旁边一在焗油烫头发的大妈说到 别这样为难老板,人家赚点钱不容易...首先如果你是高手那么请出门右转,如果你是菜鸟那么恭喜你,go on吧 全局对象在javascript程序中任何位置,都可以拈来就用的这种东西,是全局对象的属性.那么属性所在的对象也就是全局对象了.当javascript解释器启动时(或者任何Web浏览器加载新

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

函数的定义 首先在javascript中,函数就是对象,程序可以随意操控它们.比如,可以给它们设置属性,甚至调用它们的方法.函数使用function关键字来定义.它既可以用在函数定义表达式,也可以用在函数声明语句中.函数声明function后面必须要更上函数名称也就是所谓的函数名称标识符.如果是函数表达式函数名称标识符可有可无.这段重点是函数是对象,所以函数表现出来的种种行为你想想成对象,那么很多疑惑可能就恍如昨日初见. 函数调用 4种方式来调用javascript函数: 1.作为函数 就是函数

13 类对象的声明中加小括号{}和不加小括号{}的区别

以下代码有什么问题? struct Test { Test( int ) {} Test() {} void fun() {} }; void main( void ) { Test a(1); a.fun(); Test b(); b.fun(); } A b.fun()会出错 B Test结构的定义中应该加上public修饰符,才能main函数值调用该类的方法 C Test(int) {}改成Test(int a) {} D 以上说法都错误 解答: b.fun();   //b不是Test的

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

摘要:本文主要介绍JavaScript中小括号有五种语义. Javascript中小括号有五种语义 语义1,函数声明时参数表 function func(arg1,arg2){ // ... } 语义2,和一些语句联合使用以达到某些限定作用 // 和for in一起使用 for(var a in obj){ // ... } // 和if一起使用 if(boo){ //... } // 和while一起使用 while(boo){ // ... } // 和do while一起使用 do{ //

关于 JavaScript 中一个小细节问题 (在控制台中直接 {} 对象报错问题)

在 Chrome 浏览器,大家可能遇到这样一个小问题. 随便输入一个 Object 对象  ,比如 {Name:'王尼玛',Age:20} ,将会报错.之前,也从来没去考虑过到底是为啥原因. 今天,刚好看到博客园有博友文章,顺便记录一下. 在 JavaScript 中, : 有三种作用,想必大家都知道,其一  三元表达式  true? A:B,其二 在 switch case 中 case 语句中会用到,其三 就是上图中,对象直接量表达式中. 其实 ,在 JS 中,: 还有一种用法,如下所示,内

javascript中的小技巧

字符串转日期对象 <script> function get_unix_time(dateStr) { var newstr = dateStr.replace(/-/g,'/'); var date = new Date(newstr); var time_str = date.getTime().toString(); return time_str/1000; } console.log("1399479731") console.log(get_unix_time(

shell中的大括号和小括号

一.小括号,园括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格. ②命令替换.等同于`cmd`,shell扫描一遍命令行,发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令.有些shell不支持,如tcsh. ③用于初始化数组.如:array=(a b c d) 2.双小括号 (( ))