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