zoukankan      html  css  js  c++  java
  • 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。

    佛为心,道为骨,儒为表,大度看世界; 技在手,能在身,思在脑,从容过生活; 三千年读史,不外功名利禄; 九万里悟道,终归诗酒田园;
  • 相关阅读:
    JZOJ 1075. 【GDKOI2006】新红黑树
    [CQOI2018]异或序列
    JZOJ 1077. 【GDKOI2006】防御力量
    [TJOI2014]匹配
    JZOJ 1073. 【GDOI2005】山海经
    JZOJ 3745. 【NOI2014模拟7.14】Problem A
    SQL Server 2008 数据库快照
    vSphere 5.0 开发系列(一)vSphere 5.0 环境搭建手顺
    Crm系统帮助
    SQL Server 2008 Entity Data Model 和 Linq to Entities
  • 原文地址:https://www.cnblogs.com/taofx/p/4139415.html
Copyright © 2011-2022 走看看