共用方式為


function 陳述式

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

// in the global scope
function functionname([paramlist]) [: type] {
   [body]
}

// declares a method in a class
[attributes] [modifiers] function functionname([paramlist]) [: type] {
   [body]
}

// declares a method in an interface
[attributes] [modifiers] function functionname([paramlist]) [: type]

引數

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

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

  • 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 陳述式

概念

變數和常數範圍

型別附註

具型別陣列

其他資源

修飾詞