码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2014-11-13 16:30:33      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   os   使用   sp   

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 中的小括号 “()” 的多义性

标签:style   blog   http   io   color   ar   os   使用   sp   

原文地址:http://www.cnblogs.com/XingchenStudio/p/4095021.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!