TypeScript 函數
函數是一組執行同一任務的語句。我們可以把代碼劃分到不同的函數中,每一個函數執行一個特定的任務來進行的。
函數聲明告訴編譯器函數的名稱、返回類型和參數。函數定義提供了函數的實際主體。
1. 函數定義
函數就是包裹在花括號中的代碼塊,前面使用了關鍵詞 function:
語法格式如下所示:
function function_name() { // 執行代碼 }
范例
function () { // 函數定義 console.log("調用函數") }
2. 調用函數
函數只有通過調用才可以執行函數內的代碼。
語法格式如下所示:
function_name()
范例
function test() { // 函數定義 console.log("調用函數") } test() // 調用函數
3. 函數返回值
有時,我們會希望函數將執行的結果返回到調用它的地方。
通過使用 return 語句就可以實現。
在使用 return 語句時,函數會停止執行,并返回指定的值。
語法格式如下所示:
function function_name():return_type { // 語句 return value; }
- return_type 是返回值的類型。
- return 關鍵詞后跟著要返回的結果。
- 一般情況下,一個函數只有一個 return 語句。
- 返回值的類型需要與函數定義的返回類型(return_type)一致。
范例
// 函數定義 function greet():string { // 返回一個字符串 return "Hello World" } function caller() { var msg = greet() // 調用 greet() 函數 console.log(msg) } // 調用函數 caller()
- 范例中定義了函數 greet(),返回值的類型為 string。
- greet() 函數通過 return 語句返回給調用它的地方,即變量 msg,之后輸出該返回值。。
編譯以上代碼,得到以下 JavaScript 代碼:
// 函數定義 function greet() { return "Hello World"; } function caller() { var msg = greet(); // 調用 greet() 函數 console.log(msg); } // 調用函數 caller();
4. 帶參數函數
在調用函數時,您可以向其傳遞值,這些值被稱為參數。
這些參數可以在函數中使用。
您可以向函數發送多個參數,每個參數使用逗號 , 分隔:
語法格式如下所示:
function func_name( param1 [:datatype], param2 [:datatype]) { }
- param1、param2 為參數名。
- datatype 為參數類型。
范例
function add(x: number, y: number): number { return x + y; } console.log(add(1,2))
- 范例中定義了函數 add(),返回值的類型為 number。
- add() 函數中定義了兩個 number 類型的參數,函數內將兩個參數相加并返回。
編譯以上代碼,得到以下 JavaScript 代碼:
function add(x, y) { return x + y; } console.log(add(1, 2));
輸出結果為:
3
5. 可選參數和默認參數
1) 可選參數
在 TypeScript 函數里,如果我們定義了參數,則我們必須傳入這些參數,除非將這些參數設置為可選,可選參數使用問號標識 ?。
范例
function buildName(firstName: string, lastName: string) { return firstName + " " + lastName; } let result1 = buildName("Bob"); // 錯誤,缺少參數 let result2 = buildName("Bob", "Adams", "Sr."); // 錯誤,參數太多了 let result3 = buildName("Bob", "Adams"); // 正確
以下范例,我們將 lastName 設置為可選參數:
function buildName(firstName: string, lastName?: string) { if (lastName) return firstName + " " + lastName; else return firstName; } let result1 = buildName("Bob"); // 正確 let result2 = buildName("Bob", "Adams", "Sr."); // 錯誤,參數太多了 let result3 = buildName("Bob", "Adams"); // 正確
可選參數必須跟在必需參數后面。 如果上例我們想讓 firstName 是可選的,lastName 必選,那么就要調整它們的位置,把 firstName 放在后面。
如果都是可選參數就沒關系。
2) 默認參數
我們也可以設置參數的默認值,這樣在調用函數的時候,如果不傳入該參數的值,則使用默認參數,語法格式為:
function function_name(param1[:type],param2[:type] = default_value) { }
注意:參數不能同時設置為可選和默認。
范例
以下范例函數的參數 rate 設置了默認值為 0.50,調用該函數時如果未傳入參數則使用該默認值:
function calculate_discount(price:number,rate:number = 0.50) { var discount = price * rate; console.log("計算結果: ",discount); } calculate_discount(1000) calculate_discount(1000,0.30)
編譯以上代碼,得到以下 JavaScript 代碼:
function calculate_discount(price, rate) { if (rate === void 0) { rate = 0.50; } var discount = price * rate; console.log("計算結果: ", discount); } calculate_discount(1000); calculate_discount(1000, 0.30);
輸出結果為:
計算結果: 500 計算結果: 300
6. 剩余參數
有一種情況,我們不知道要向函數傳入多少個參數,這時候我們就可以使用剩余參數來定義。
剩余參數語法允許我們將一個不確定數量的參數作為一個數組傳入。
function buildName(firstName: string, ...restOfName: string[]) { return firstName + " " + restOfName.join(" "); } let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");
函數的最后一個命名參數 restOfName 以 ... 為前綴,它將成為一個由剩余參數組成的數組,索引值從0(包括)到 restOfName.length(不包括)。
function addNumbers(...nums:number[]) { var i; var sum:number = 0; for(i = 0;i<nums.length;i++) {="" sum="sum" +="" nums[i];="" }="" console.log("和為:",sum)="" addnumbers(1,2,3)="" addnumbers(10,10,10,10,10)=""
- 如何通過JavaScript實現組件化和模塊化
- JavaScript如何對負數開方
- javascript中如何完成全選
- javascript數組去重內置方法怎么使用
- JavaScript工程url無法使用如何解決
- javascript如何刪除網頁數據
- javascript如何輸出當前時間
- 如何用JavaScript在Vue3中實現動畫
- vscode如何編寫javascript
- javascript關閉怎么處理
- javascript中怎么嵌套php腳本
- JavaScript怎么實現檢索功能
- TypeScript 基礎語法
- TypeScript 數據類型
- TypeScript 運算符
- TypeScript 條件語句
- TypeScript 循環
- TypeScript Array 數組
- TypeScript 聯合類型
- TypeScript 命名空間