1. 程式人生 > >JavaScript中函式作為引數進行傳遞時的括號問題

JavaScript中函式作為引數進行傳遞時的括號問題

JS中經常會遇到把一個函式作為引數傳遞給另一個函式。那麼通常作為引數進行傳遞的函式要不要加括號呢

這裡就要講到括號的二義性:

  • 當函式名後加上括號時,通常會執行函式體本身。如果函式有返回值時,此時會得到函式的返回值;
  • 當函式名後不加括號時,其實質上是一個函式指標,只是用於找到函式體的位置,不會直接執行函式體;
因此,如果時把函式作為引數進行值傳遞時,通常不需要加括號,只是把它當做一個函式指標;但是如果要進行函式呼叫的時候,由於是想要得到函式的返回值,因此必須要加上括號。 下邊的例子可以作為比較(程式碼來自w3cschool):

此處使用函式名加括號,會產生一個返回值,其實質是相當於直接呼叫了JavaScript的sort函式。由於sort()函式排序實質是字串排序,因此最終的排序結果是一個字串排序的結果。