解析Javascript小括號“()”的多義性
更新時間:2013年12月03日 08:49:42 作者:
這篇文章主要介紹了Javascript小括號“()”的多義性。需要的朋友可以過來參考下,希望對大家有所幫助
Javascript中小括號有五種語義
語義1,函數(shù)聲明時參數(shù)表
復制代碼 代碼如下:
function func(arg1,arg2){
// ...
}
語義2,和一些語句聯(lián)合使用以達到某些限定作用
復制代碼 代碼如下:
// 和for in一起使用
for(var a in obj){
// ...
}
// 和if一起使用
if(boo){
//...
}
// 和while一起使用
while(boo){
// ...
}
// 和do while一起使用
do{
// ...
}while(boo)
注意:在與if、while及do while一起使用時小括號會將其中的表達式結果隱式的轉(zhuǎn)換成布爾值。見 JavaScript中的隱式類型轉(zhuǎn)換 。
語義3,和new一起使用用來傳值(實參)
復制代碼 代碼如下:
// 假設已經(jīng)定義了類Person,它有兩個字段姓名(name),年齡(age)
var p1 = new Person('Jack',26);
語義4,作為函數(shù)或?qū)ο蠓椒ǖ恼{(diào)用運算符(如果定義了參數(shù)也可與語義3一樣傳實參)
復制代碼 代碼如下:
// 假設已經(jīng)定義了函數(shù)func
func();
// 假設已經(jīng)定義了對象obj,且擁有func方法
obj.func();
這里提下typeof運算符,有人喜歡這么使用
typeof(xxx);
請注意typeof后的小括號并非語義4(即不是函數(shù)調(diào)用),而是后面提到的語義5。我使用typeof一般不加后面的小括號。
語義5,強制表達式運算
關于語義5,大家最熟悉的莫過于使用eval解析JSON
復制代碼 代碼如下:
function strToJson(str){
// eval 中字符串兩旁加了強制運算符()
var json = eval('(' + str + ')');
return json;
}
又如使用較多的是匿名函數(shù)自執(zhí)行
復制代碼 代碼如下:
(function(){
// ...
})();
相關文章
javascript數(shù)組的擴展實現(xiàn)代碼集合
非常不錯的javascript數(shù)據(jù)功能增強函數(shù)2008-06-06JavaScript用構造函數(shù)如何獲取變量的類型名
在JavaScript中,如何準確獲取變量的類型名是一個經(jīng)常使用的問題。但是常常不能獲取到變量的精確名稱,或者必須使用jQuery 中的方法,這里通過 typeof ,jQuery.type 和 通過構造函數(shù)來獲取變量類型這三種方法詳細介紹一遍。有需要的朋友們可以參考借鑒,下面來一起看看吧。2016-12-12Javascript中arguments對象的詳解與使用方法
ECMAScript中的函數(shù)并不介意傳遞的參數(shù)有多少,也不介意是什么類型。由于JavaScript允許函數(shù)有不定數(shù)目的參數(shù),所以我們需要一種機制,可以在 函數(shù)體內(nèi) 部讀取所有參數(shù)。這就是arguments對象的由來。這篇文章將詳細介紹Javascript中的arguments對象和使用方法。2016-10-10