在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙TypeScript入門學習第8天:【TypeScript 函數(shù)】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-03 14:54 ? 次閱讀

1、TypeScript 函數(shù)

函數(shù)是一組一起執(zhí)行一個任務的語句。

您可以把代碼劃分到不同的函數(shù)中。如何劃分代碼到不同的函數(shù)中是由您來決定的,但在邏輯上,劃分通常是根據(jù)每個函數(shù)執(zhí)行一個特定的任務來進行的。

函數(shù)聲明告訴編譯器函數(shù)的名稱、返回類型和參數(shù)。函數(shù)定義提供了函數(shù)的實際主體。

2、函數(shù)定義

函數(shù)就是包裹在花括號中的代碼塊,前面使用了關鍵詞 function:

語法格式如下所示:

function function_name()
{
    // 執(zhí)行代碼
}

實例

TypeScript

function () { // 函數(shù)定義 console.log("調用函數(shù)") }

3、調用函數(shù)

函數(shù)只有通過調用才可以執(zhí)行函數(shù)內的代碼。

語法格式如下所示:

function_name()

.png

搜狗高速瀏覽器截圖20240326151547.png

實例

TypeScript

function test() { // 函數(shù)定義 console.log("調用函數(shù)") } test() // 調用函數(shù)

4、函數(shù)返回值

有時,我們會希望函數(shù)將執(zhí)行的結果返回到調用它的地方。

通過使用 return 語句就可以實現(xiàn)。

在使用 return 語句時,函數(shù)會停止執(zhí)行,并返回指定的值。

語法格式如下所示:

function function_name():return_type { 
    // 語句
    return value; 
}
  • return_type 是返回值的類型。
  • return 關鍵詞后跟著要返回的結果。
  • 一般情況下,一個函數(shù)只有一個 return 語句。
  • 返回值的類型需要與函數(shù)定義的返回類型(return_type)一致。

實例

TypeScript

// 函數(shù)定義
function greet():string { // 返回一個字符串
    return "Hello World" 
} 
 
function caller() { 
    var msg = greet() // 調用 greet() 函數(shù) 
    console.log(msg) 
} 
 
// 調用函數(shù)
caller()
  • 實例中定義了函數(shù) greet() ,返回值的類型為 string。
  • greet() 函數(shù)通過 return 語句返回給調用它的地方,即變量 msg,之后輸出該返回值。。

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

// 函數(shù)定義
function greet() {
    return "Hello World";
}
function caller() {
    var msg = greet(); // 調用 greet() 函數(shù) 
    console.log(msg);
}
// 調用函數(shù)
caller();

5、帶參數(shù)函數(shù)

在調用函數(shù)時,您可以向其傳遞值,這些值被稱為參數(shù)。

這些參數(shù)可以在函數(shù)中使用。

您可以向函數(shù)發(fā)送多個參數(shù),每個參數(shù)使用逗號 , 分隔:

語法格式如下所示:

function func_name( param1 [:datatype], param2 [:datatype]) {   
}
  • param1、param2 為參數(shù)名。
  • datatype 為參數(shù)類型。

實例

TypeScript

function add(x: number, y: number): number {
    return x + y;
}
console.log(add(1,2))
  • 實例中定義了函數(shù) add() ,返回值的類型為 number。
  • add() 函數(shù)中定義了兩個 number 類型的參數(shù),函數(shù)內將兩個參數(shù)相加并返回。

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

function add(x, y) {
    return x + y;
}
console.log(add(1, 2));

輸出結果為:

3

6、可選參數(shù)和默認參數(shù)

可選參數(shù)

在 TypeScript 函數(shù)里,如果我們定義了參數(shù),則我們必須傳入這些參數(shù),除非將這些參數(shù)設置為可選,可選參數(shù)使用問號標識 ?。

實例

TypeScript

function buildName(firstName: string, lastName: string) {
    return firstName + " " + lastName;
}
 
let result1 = buildName("Bob");                  // 錯誤,缺少參數(shù)
let result2 = buildName("Bob", "Adams", "Sr.");  // 錯誤,參數(shù)太多了
let result3 = buildName("Bob", "Adams");         // 正確

以下實例,我們將 lastName 設置為可選參數(shù):

TypeScript

function buildName(firstName: string, lastName?: string) {
    if (lastName)
        return firstName + " " + lastName;
    else
        return firstName;
}
 
let result1 = buildName("Bob");  // 正確
let result2 = buildName("Bob", "Adams", "Sr.");  // 錯誤,參數(shù)太多了
let result3 = buildName("Bob", "Adams");  // 正確

可選參數(shù)必須跟在必需參數(shù)后面。 如果上例我們想讓 firstName 是可選的,lastName 必選,那么就要調整它們的位置,把 firstName 放在后面。

如果都是可選參數(shù)就沒關系。

默認參數(shù)

我們也可以設置參數(shù)的默認值,這樣在調用函數(shù)的時候,如果不傳入該參數(shù)的值,則使用默認參數(shù),語法格式為:

function function_name(param1[:type],param2[:type] = default_value) { 
}復制

注意:參數(shù)不能同時設置為可選和默認。

實例

以下實例函數(shù)的參數(shù) rate 設置了默認值為 0.50,調用該函數(shù)時如果未傳入?yún)?shù)則使用該默認值:

TypeScript

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 代碼:

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

7、剩余參數(shù)

有一種情況,我們不知道要向函數(shù)傳入多少個參數(shù),這時候我們就可以使用剩余參數(shù)來定義。

剩余參數(shù)語法允許我們將一個不確定數(shù)量的參數(shù)作為一個數(shù)組傳入。

TypeScript

function buildName(firstName: string, ...restOfName: string[]) {
    return firstName + " " + restOfName.join(" ");
}
  
let employeeName = buildName("Joseph", "Samuel", "Lucas", "MacKinzie");

函數(shù)的最后一個命名參數(shù) restOfName 以 ... 為前綴,它將成為一個由剩余參數(shù)組成的數(shù)組,索引值從0(包括)到 restOfName.length(不包括)。

TypeScript

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

function addNumbers() {
    var nums = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        nums[_i] = arguments[_i];
    }
    var i;
    var sum = 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);
和為: 6
和為: 50

8、匿名函數(shù)

匿名函數(shù)是一個沒有函數(shù)名的函數(shù)。

匿名函數(shù)在程序運行時動態(tài)聲明,除了沒有函數(shù)名外,其他的與標準函數(shù)一樣。

我們可以將匿名函數(shù)賦值給一個變量,這種表達式就成為函數(shù)表達式。

語法格式如下:

var res = function( [arguments] ) { ... }

實例

不帶參數(shù)匿名函數(shù):

TypeScript

var msg = function() { 
    return "hello world";  
} 
console.log(msg())

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var msg = function () {
    return "hello world";
};
console.log(msg());

輸出結果為:

hello world

帶參數(shù)匿名函數(shù):

TypeScript

var res = function(a:number,b:number) { 
    return a*b;  
}; 
console.log(res(12,2))

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var res = function (a, b) {
    return a * b;
};
console.log(res(12, 2));

輸出結果為:

24

匿名函數(shù)自調用

匿名函數(shù)自調用在函數(shù)后使用 () 即可:

TypeScript

(function () { 
    var x = "Hello!!";   
    console.log(x)     
 })()

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

(function () { 
    var x = "Hello!!";   
    console.log(x)    
})()

輸出結果為:

Hello!!

9、構造函數(shù)

TypeScript 也支持使用 JavaScript 內置的構造函數(shù) Function() 來定義函數(shù):

語法格式如下:

var res = new Function ([arg1[, arg2[, ...argN]],] functionBody)復制

參數(shù)說明:

  • arg1, arg2, ... argN :參數(shù)列表。
  • functionBody :一個含有包括函數(shù)定義的 JavaScript 語句的字符串。

實例

TypeScript

var myFunction = new Function("a", "b", "return a * b"); 
var x = myFunction(4, 3); 
console.log(x);

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var myFunction = new Function("a", "b", "return a * b"); 
var x = myFunction(4, 3); 
console.log(x);

輸出結果為:

12

10、遞歸函數(shù)

遞歸函數(shù)即在函數(shù)內調用函數(shù)本身。

舉個例子:

從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?"從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?'從前有座山,山里有座廟,廟里有個老和尚,正在給小和尚講故事呢!故事是什么呢?……'"

實例

TypeScript

function factorial(number) {
    if (number <= 0) {         // 停止執(zhí)行
        return 1; 
    } else {     
        return (number * factorial(number - 1));     // 調用自身
    } 
}; 
console.log(factorial(6));      // 輸出 720復制

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

function factorial(number) {
    if (number <= 0) { // 停止執(zhí)行
        return 1;
    }
    else {
        return (number * factorial(number - 1)); // 調用自身
    }
}
;
console.log(factorial(6)); // 輸出 720

輸出結果為:

720

11、Lambda 函數(shù)

Lambda 函數(shù)也稱之為箭頭函數(shù)。

箭頭函數(shù)表達式的語法比函數(shù)表達式更短。

函數(shù)只有一行語句:

( [param1, param2,…param n] )= >statement;

實例

以下實例聲明了 lambda 表達式函數(shù),函數(shù)返回兩個數(shù)的和:

TypeScript

var foo = (x:number)= >10 + x 
console.log(foo(100))      //輸出結果為 110

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var foo = function (x) { return 10 + x; };
console.log(foo(100)); //輸出結果為 110

輸出結果為:

110

函數(shù)是一個語句塊:

( [param1, param2,…param n] )= > {
 
    // 代碼塊
}

實例

以下實例聲明了 lambda 表達式函數(shù),函數(shù)返回兩個數(shù)的和:

TypeScript

var foo = (x:number)=> { x = 10 + x console.log(x) } foo(100)

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var foo = function (x) { x = 10 + x; console.log(x); }; foo(100);

輸出結果為:

110

我們可以不指定函數(shù)的參數(shù)類型,通過函數(shù)內來推斷參數(shù)類型:

TypeScript

var func = (x)=> { if(typeof x=="number") { console.log(x+" 是一個數(shù)字") } else if(typeof x=="string") { console.log(x+" 是一個字符串") } } func(12) func("Tom")

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var func = function (x) { if (typeof x == "number") { console.log(x + " 是一個數(shù)字"); } else if (typeof x == "string") { console.log(x + " 是一個字符串"); } }; func(12); func("Tom");

輸出結果為:

12 是一個數(shù)字
Tom 是一個字符串

單個參數(shù) () 是可選的:

TypeScript

var display = x => { console.log("輸出為 "+x) } display(12)

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var display = function (x) { console.log("輸出為 " + x); }; display(12);

輸出結果為:

輸出為 12

無參數(shù)時可以設置空括號:

TypeScript

var disp =()=> { console.log("Function invoked"); } disp();

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

var disp = function () { console.log("調用函數(shù)"); }; disp();

輸出結果為:

調用函數(shù)

12、函數(shù)重載

重載是方法名字相同,而參數(shù)不同,返回類型可以相同也可以不同。

每個重載的方法(或者構造函數(shù))都必須有一個獨一無二的參數(shù)類型列表。

參數(shù)類型不同:

function disp(string):void; 
function disp(number):void;

參數(shù)數(shù)量不同:

function disp(n1:number):void; 
function disp(x:number,y:number):void;

參數(shù)類型順序不同:

function disp(n1:number,s1:string):void; 
function disp(s:string,n:number):void;

如果參數(shù)類型不同,則參數(shù)類型應設置為 any

參數(shù)數(shù)量不同你可以將不同的參數(shù)設置為可選。

實例

以下實例定義了參數(shù)類型與參數(shù)數(shù)量不同:

TypeScript

function disp(s1:string):void; function disp(n1:number,s1:string):void; function disp(x:any,y?:any):void { console.log(x); console.log(y); } disp("abc") disp(1,"xyz");

編譯以上代碼,得到以下 JavaScript 代碼:

JavaScript

function disp(x, y) { console.log(x); console.log(y); } disp("abc"); disp(1, "xyz");

輸出結果為:

abc
undefined
1
xyz

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關注

    關注

    3

    文章

    4365

    瀏覽量

    63852
  • 鴻蒙
    +關注

    關注

    57

    文章

    2469

    瀏覽量

    43644
收藏 人收藏

    評論

    相關推薦

    鴻蒙TypeScript入門學習4:【TS變量聲明】

    變量是一種使用方便的占位符,用于引用計算機內存地址。 我們可以把變量看做存儲數(shù)據(jù)的容器。
    的頭像 發(fā)表于 03-29 14:49 ?1648次閱讀

    鴻蒙TypeScript入門學習6:【條件語句】

    條件語句用于基于不同的條件來執(zhí)行不同的動作。 TypeScript 條件語句是通過一條或多條語句的執(zhí)行結果(True 或 False)來決定執(zhí)行的代碼塊。
    的頭像 發(fā)表于 04-01 13:51 ?922次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>入門</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>6<b class='flag-5'>天</b>:【條件語句】

    鴻蒙TypeScript學習7:【TypeScript 循環(huán)】

    有的時候,我們可能需要多次執(zhí)行同一塊代碼。一般情況下,語句是按順序執(zhí)行的:函數(shù)中的第一個語句先執(zhí)行,接著是第二個語句,依此類推。 編程語言提供了更為復雜執(zhí)行路徑的多種控制結構。
    的頭像 發(fā)表于 04-02 14:28 ?1009次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>7<b class='flag-5'>天</b>:【<b class='flag-5'>TypeScript</b> 循環(huán)】

    鴻蒙TypeScript 開發(fā)學習9:【TypeScript Number】

    TypeScript 與 JavaScript 類似,支持 Number 對象。 Number 對象是原始數(shù)值的包裝對象。
    的頭像 發(fā)表于 04-07 18:02 ?957次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b> 開發(fā)<b class='flag-5'>學習</b><b class='flag-5'>第</b>9<b class='flag-5'>天</b>:【<b class='flag-5'>TypeScript</b> Number】

    鴻蒙語言TypeScript學習16:【類】

    TypeScript 支持面向對象的所有特性,比如 類、接口等。
    的頭像 發(fā)表于 04-15 09:29 ?1241次閱讀
    <b class='flag-5'>鴻蒙</b>語言<b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>16<b class='flag-5'>天</b>:【類】

    鴻蒙TypeScript學習17:【對象】

    對象是包含一組鍵值對的實例。 值可以是標量、函數(shù)、數(shù)組、對象等
    的頭像 發(fā)表于 04-15 15:33 ?808次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>17<b class='flag-5'>天</b>:【對象】

    鴻蒙TypeScript學習20:【模塊】

    TypeScript 模塊的設計理念是可以更換的組織代碼。 模塊是在其自身的作用域里執(zhí)行,并不是在全局作用域,這意味著定義在模塊里面的變量、函數(shù)和類等在模塊外部是不可見的,除非明確地使用 export 導出它們。類似地,我們必須通過 import 導入其他模塊導出的
    的頭像 發(fā)表于 04-18 15:19 ?932次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>20<b class='flag-5'>天</b>:【模塊】

    詳解了將三萬行代碼從Flow移植到TypeScript的全過程

    最新發(fā)布的Babel 7已經開始支持TypeScript了,這引起了我的注意。這個發(fā)布意味著采用TypeScript不再需要引入整個TypeScript生態(tài)系統(tǒng),我們可以繼續(xù)通過Babel來生成JavaScript。更重要的是,
    的頭像 發(fā)表于 02-11 11:05 ?3404次閱讀

    快速了解TypeScript和JavaScript之間的差異

    如果我們同時考慮兩者 ——TypeScript 與 JavaScript,那么每個 JavaScript 代碼在 TypeScript 中都是有效的。這意味著 TypeScript 是 JavaScript 的超集。
    的頭像 發(fā)表于 03-13 10:19 ?1212次閱讀

    TypeScript之父也搞大模型:推出TypeChat

    C# 和 TypeScript 之父 Anders Hejlsberg 今天宣布了全新的開源項目 ——TypeChat,它通過 AI 在自然語言和應用程序模式 (application schema),以及 API 之間構建了一座 “橋梁”,能用新穎有趣的方式使用 TypeScr
    的頭像 發(fā)表于 07-24 09:27 ?987次閱讀
    <b class='flag-5'>TypeScript</b>之父也搞大模型:推出TypeChat

    鴻蒙TypeScript入門學習2TypeScript安裝】

    本文介紹 TypeScript 環(huán)境的安裝。 我們需要使用到 npm 工具安裝,如果你還不了解 npm,可以參考我之前文檔。
    的頭像 發(fā)表于 03-27 15:22 ?656次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>入門</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>2<b class='flag-5'>天</b>【<b class='flag-5'>TypeScript</b>安裝】

    鴻蒙TypeScript開發(fā)入門學習3:【TS基礎類型】

    任意值是 TypeScript 針對編程時類型不明確的變量使用的一種數(shù)據(jù)類型,它常用于以下三種情況。
    的頭像 發(fā)表于 03-28 15:02 ?695次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b>開發(fā)<b class='flag-5'>入門</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>3<b class='flag-5'>天</b>:【TS基礎類型】

    鴻蒙TypeScript學習13:【元組】

    元組中允許存儲不同類型的元素,元組可以作為參數(shù)傳遞給函數(shù)
    的頭像 發(fā)表于 04-11 14:43 ?662次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>13<b class='flag-5'>天</b>:【元組】

    鴻蒙語言TypeScript學習18:【泛型】

    泛型(Generics)是一種編程語言特性,允許在定義函數(shù)、類、接口等時使用占位符來表示類型,而不是具體的類型。
    的頭像 發(fā)表于 04-16 14:56 ?550次閱讀
    <b class='flag-5'>鴻蒙</b>語言<b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b><b class='flag-5'>第</b>18<b class='flag-5'>天</b>:【泛型】

    鴻蒙TypeScript學習21:【聲明文件】

    TypeScript 作為 JavaScript 的超集,在開發(fā)過程中不可避免要引用其他第三方的 JavaScript 的庫。
    的頭像 發(fā)表于 04-19 15:02 ?783次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>TypeScript</b><b class='flag-5'>學習</b>21<b class='flag-5'>天</b>:【聲明文件】
    主站蜘蛛池模板: 色婷婷一区 | 久久天天躁狠狠躁夜夜躁综合 | 4444狠狠 | 国产伦精品一区二区三区在线观看 | 欧美色网在线 | 日本69sex护士wwxx | 国产精品五月天 | 日本高清加勒比 | 天天干天天干天天干天天 | 欧美ab在线 | 色香淫欲| 成人在线天堂 | 天堂视频在线 | 免费精品美女久久久久久久久久 | 天天干天天骑 | 亚洲综合色婷婷中文字幕 | 5278欧美一区 | 精品国产柚木在线观看 | 亚洲成av人片在线观看无码 | 亚洲swag精品自拍一区 | 欧美三级视频在线 | 黑人xxxx精品| 日本特黄在线观看免费 | 男人日女人视频免费看 | 国产免费卡1卡2卡 | 在线免费日韩 | 天堂bt资源在线官网 | 久久精品国产亚洲5555 | 午夜影视免费观看 | 欧美另类自拍 | 夜夜操网站 | 五月婷婷丁香久久 | 久久亚洲精品玖玖玖玖 | 一区二区三区免费视频播放器 | 日本aaaa级毛片在线看 | 欧美一卡2卡三卡四卡五卡 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 亚洲成a人片在线观看导航 亚洲成a人片在线观看尤物 | 亚洲伊人成综合成人网 | 一级一级女人18毛片 | 精品久久久久久 | 你懂的网站在线观看 |