Share via


function 陳述式

更新:2007 年 11 月

宣告新函式。而且可以用於幾種內容中:

 // in the global scope function functionname([parmlist]) [: type] {    [body] }  // declares a method in a class [attributes] [modifiers] function functionname([parmlist]) [: type] {    [body] }  // declares a method in an interface [attributes] [modifiers] function functionname([parmlist]) [: type]

引數

  • attributes
    選擇項。控制方法之可視性和行為的屬性 (Attribute)。

  • 修飾詞
    選擇項。控制方法之可視性和行為的修飾詞。

  • functionname
    必要項。函式或方法的名稱。

  • paramlist
    選擇項。函式或方法的參數清單 (以逗號分隔)。每一個參數可能包括一種型別規格。最後一個參數可以是 parameterarray,表示方法為三個句號 (...)、加上參數陣列名稱,再接著型別陣列的型別附註。

  • type
    選擇項。傳回方法的型別。

  • body
    選擇項。一或多個定義函式或方法之運作方式的陳述式。

備註

使用 function 陳述式可宣告函式供稍後使用。body 中包含的程式碼,會等到從指令碼中的其他位置呼叫函式之後才執行。return 陳述式是用來傳回函式的值。您不須使用 return 陳述式,當程式到達函式結尾時即會傳回。

方法與全域函式類似,但是他們會將範圍擴及進行定義的 class 或 interface,也可能有控制可視性與行為的不同修飾詞。interface 中的方法不能有內文,而 class 中的方法必須有本文。本規則有一項例外,如果 class 中的方法是 abstractclass 本身是 abstract,則方法不可以有本文。

您可以用型別附註來宣告函式或方法要傳回何種資料型別。如果指定傳回型別為 void,則函式內的任何 return 陳述式不會傳回任何值。如果指定 void 以外的傳回型別,則函式中的所有 return 陳述式必須傳回由特定傳回型別決定的值。如果已指定傳回型別,但是 return 陳述式不具有任何值,或是到達函式結尾時沒有 return 陳述式,則傳回 undefined 的值。建構函式不能指定傳回型別,因為 new 運算子會自動傳回所建立的物件。

如果沒有指定函式的明確傳回型別,則將傳回型別設為 Object 或 void。只有在函式本文中沒有 return 陳述式或 return 陳述式沒有值時,才會選取 void 傳回型別。

參數陣列可做為函式的最後一個參數。除了必要參數,任何傳送到函式的額外引數 (如果有的話) 都會輸入參數陣列。參數的型別附註不是選擇項,它必須是一個型別陣列。如果要接受任意型別的參數,請用 Object[] 做為型別陣列。呼叫一個可接受不同數目引數的函式時,可使用一個預期型別的明確陣列,以便提供參數的清單。

呼叫函式時,請確定您已包含括弧以及任何必要的引數。如果呼叫沒有括弧的函式,則會傳回函式的文字,而不是函式的結果。

範例 1

以下範例說明 function 陳述式第一種語法的使用方式:

interface IForm {
   // This is using function in Syntax 3.
   function blank() : String;
}

class CForm implements IForm {
   // This is using function in Syntax 2.
   function blank() : String {
      return("This is blank.");
   }
}

// This is using function in Syntax 1.
function addSquares(x : double, y : double) : double {
   return(x*x + y*y);
}

// Now call the function.
var z : double = addSquares(3.,4.);
print(z);

// Call the method.
var derivedForm : CForm = new CForm;
print(derivedForm.blank());

// Call the inherited method.
var baseForm : IForm = derivedForm;
print(baseForm.blank());

本程式的輸出為:

25
This is blank.
This is blank.

範例 2

函式 printFacts 的輸入內容為 String 以及使用過的參數陣列,以接受 Object 的變數編號。

function printFacts(name : String, ... info : Object[]) {
   print("Name: " + name);
   print("Number of extra information: " + info.length);
   for (var factNum in info) {
      print(factNum + ": " + info[factNum]);
   }
}

// Pass several arguments to the function.
printFacts("HAL 9000", "Urbana, Illinois", new Date(1997,0,12));
// Here the array is intrepeted as containing arguments for the function.
printFacts("monolith", [1, 4, 9]);
// Here the array is just one of the arguments.
printFacts("monolith", [1, 4, 9], "dimensions");
printFacts("monolith", "dimensions are", [1, 4, 9]);

程式在執行中會顯示以下輸出:

Name: HAL 9000
Number of extra information: 2
0: Urbana, Illinois
1: Sun Jan 12 00:00:00 PST 1997
Name: monolith
Number of extra information: 3
0: 1
1: 4
2: 9
Name: monolith
Number of extra information: 2
0: 1,4,9
1: dimensions
Name: monolith
Number of extra information: 2
0: dimensions are
1: 1,4,9

需求

1 版 (語法 1 適用) .NET 版本 (語法 2 及語法 3 適用)

請參閱

概念

變數和常數範圍

型別附註

具型別陣列

參考

new 運算子

class 陳述式

interface 陳述式

return 陳述式

其他資源

修飾詞