Javascript小括號“()”的多義性

作者: snandy  來源: 博客園  發布時間: 2011-03-15 11:56  閱讀: 1332 次  推薦: 0   原文鏈接   [收藏]  
摘要:本文主要介紹JavaScript中小括號有五種語義。

  Javascript中小括號有五種語義

  語義1,函數聲明時參數表

function func(arg1,arg2){
  // ...
}

  語義2,和一些語句聯合使用以達到某些限定作用

// 和for in一起使用
for(var a in obj){
  // ...
}

// 和if一起使用
if(boo){
  //...
}

// 和while一起使用
while(boo){
  // ...
}

// 和do while一起使用
do{
  // ...
}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

function strToJson(str){
     // eval 中字符串兩旁加了強制運算符()
     var json = eval('(' + str + ')'); 
     return json;
}

  又如使用較多的是匿名函數自執行

(function(){
  // ...
})();

  注意,以上代碼第1對小括號是語義5,第3對則是語義4。

0
0
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()