JavaScript 小括號()分組運算子

螞蟻小編發表於2017-12-21

小括號()可以作為分組運算子,以改變表示式的優先順序。

程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
var a=(1+2)*4;
console.log(a);

輸出值是12,分組運算子可以改變運算子的優先順序,否則的話輸出值是9。

擴充套件說明:

(1).很多教程說它是強制運算子,ECMAScript沒有強制運算子概念,它是分組運算子。

(2).這也是為什麼eval()函式將json格式字串轉換為物件需再巢狀一個小括號的原因,可以參閱使用eval()將json字串轉換為物件要多加一個小括號一章節。 

小括號還有其他作用,下面分別做一下介紹:

(1).函式宣告和函式呼叫引數列表:

宣告函式或者呼叫函式的時候,如果有引數,那麼就將引數放在小括號之中。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
function func(a,b){
  //程式碼
}
func(1,2);

(2).與特定關鍵字形成特定語句:

小括號可以與特定的關鍵詞形成特定的語句。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
if(a>1){
  //程式碼
}
while(i<len){
  //程式碼
}
for(var i=0;i<len;i++){
  //程式碼
}

(3).表示式方式函式宣告和立即呼叫函式表示式:

建立一個函式除了函式宣告方式宣告之外,還可以使用表示式方式。

程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
function func(){
  //程式碼
}
var func=function(){
  //程式碼
}

第二種就是表示式方式宣告一個函式。下面介紹一下函式宣告和表示式方式的區別:

函式宣告必須帶有識別符號,也就是函式名,但是函式表示式方式,識別符號帶不帶都可以。

[JavaScript] 純文字檢視 複製程式碼
function 函式名稱 (引數:可選){ 函式體 }//函式宣告方式
function 函式名稱(可選)(引數:可選){ 函式體 }//函式表示式方式

要區分一個程式碼是函式宣告還是函式表示式,那要看程式碼的應用上下文,例如:

[JavaScript] 純文字檢視 複製程式碼
function func(){};//函式宣告方式
(function func(){})//函式表示式方式

出現在運算子相關上下文中,那麼它就是一個表示式,例如下面最常見的程式碼:

[JavaScript] 純文字檢視 複製程式碼
var func=function(){}

上面介紹一下什麼是函式表示式,下面就看一下如何立即呼叫函式表示式:

[JavaScript] 純文字檢視 複製程式碼
(function(){})();
(function(){}());
!function(){}();

三個語句都是在運算子相關上下文中,所以都是表示式,下面做一下分析:

(1).(function(){})():一個表示式,會強制其理解成函式直接量,也就是表示式方式建立函式,(function(){})它會返回函式物件的引用,最後使用小括號()呼叫此函式。

(2).(function(){}()):如果不在外面包裹的小括號,{}會被理解為複合語句,那麼function(){}就被理解為函式宣告,但是沒有識別符號,所以報錯,使用小括號以後,就會變成表示式,也會被理解為直接量方式。

(3).!function(){}():!也是一個運算子,所以在原理同上。

相關文章