這篇文章主要介紹了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一起使用時小括號會將其中的表達式結果隱式的轉換成布爾值。見 JavaScript中的隱式類型轉換 。 語義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(){ // ... })();