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

來源:互聯網
上載者:User

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一樣傳實參)

// 假設已經定義了函數funcfunc();// 假設已經定義了對象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。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.