首页 > 代码库 > [转] 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 一起使用 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 中的小括号 “()” 的多义性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。