Javascript中小括號(hào)有五種語義
語義1,函數(shù)聲明時(shí)參數(shù)表
function func(arg1,arg2){
// ...
}
語義2,和一些語句聯(lián)合使用以達(dá)到某些限定作用
// 和for in一起使用
for(var a in obj){
// ...
}
// 和if一起使用
if(boo){
//...
}
// 和while一起使用
while(boo){
// ...
}
// 和do while一起使用
do{
// ...
}while(boo)
注意:在與if、while及do while一起使用時(shí)小括號(hào)會(huì)將其中的表達(dá)式結(jié)果隱式的轉(zhuǎn)換成布爾值。見 JavaScript中的隱式類型轉(zhuǎn)換 。語義3,和new一起使用用來傳值(實(shí)參)
// 假設(shè)已經(jīng)定義了類Person,它有兩個(gè)字段姓名(name),年齡(age)
var p1 = new Person('Jack',26);
語義4,作為函數(shù)或?qū)ο蠓椒ǖ恼{(diào)用運(yùn)算符(如果定義了參數(shù)也可與語義3一樣傳實(shí)參)
// 假設(shè)已經(jīng)定義了函數(shù)func
func();
// 假設(shè)已經(jīng)定義了對(duì)象obj,且擁有func方法
obj.func();
這里提下typeof運(yùn)算符,有人喜歡這么使用typeof(xxx);
請(qǐng)注意typeof后的小括號(hào)并非語義4(即不是函數(shù)調(diào)用),而是后面提到的語義5。我使用typeof一般不加后面的小括號(hào)。
語義5,強(qiáng)制表達(dá)式運(yùn)算
關(guān)于語義5,大家最熟悉的莫過于使用eval解析JSON
function strToJson(str){
// eval 中字符串兩旁加了強(qiáng)制運(yùn)算符()
var json = eval('(' + str + ')');
return json;
}
又如使用較多的是匿名函數(shù)自執(zhí)行
(function(){
// ...
})();