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。

    佛为心,道为骨,儒为表,大度看世界; 技在手,能在身,思在脑,从容过生活; 三千年读史,不外功名利禄; 九万里悟道,终归诗酒田园;
  • 相关阅读:
    简明Python3教程 12.问题解决
    简明Python3教程 11.数据结构
    【SPOJ 694】Distinct Substrings
    【codeforces Manthan, Codefest 17 C】Helga Hufflepuff's Cup
    【CF Manthan, Codefest 17 B】Marvolo Gaunt's Ring
    【CF Manthan, Codefest 17 A】Tom Riddle's Diary
    【SPOJ 220】 PHRASES
    【POJ 3261】Milk Patterns
    【POJ 3294】Life Forms
    【POJ 1226】Substrings
  • 原文地址:https://www.cnblogs.com/taofx/p/4139415.html
Copyright © 2011-2022 走看看