形參和實參
形參的使用
函數定義的時候寫的參數是形參。從字面意義上我們可以看出,形參就是形式上的參數。我們定義了形參也就規定了此函數的參數個數和參數類型,規范了函數。
// 形參的使用 function searchFriend(age:number):string{ return `找到了${age}歲的小姐姐` }
searchFriend 函數中定義了一個形參 age,類型為數值類型 number。
實參的使用
調用函數時傳遞的具體值就是實參。同樣從字面理解,實參就是真實的參數,我們在使用的時候,具體真實傳遞過去的就是實參。
// 形參的使用 function searchFriend(age:number):string{ return `找到了${age}歲的小姐姐` } // 實參 var age:number = 18 // 實參的使用 var result:string = searchFriend(age) console.log(result) // 找到了18歲的小姐姐
var age 就是一個實參,是個具體數值 number 18,配合 searchFriend 函數使用而定義、傳遞的參數
注意
在函數調用的時候,我們需要按照形參的規則傳遞實參,有幾個形參就要傳遞幾個實參,並且每一個實參的類型要與對應的形參類型一致。
TypeScript語言中的函數參數
TypeScript的函數參數是比較靈活的,它不像那些早起出現的傳統語言那么死板。在TypeScript語言中,函數的形參分為:可選形參、默認形參、剩余參數形參等。
1.有可選參數的函數
可選參數,就是我們定義形參的時候,可以定義一個可傳可不傳的參數。這種參數,在定義函數的時候通過?標注出來。
// 可選參數函數 function searchFriend(age:number,stature?:string):string{ let yy:string = '' yy = `找到了${age}歲` if (stature!=undefined) { yy = yy + stature } return `${yy}的小姐姐` } var result:string = searchFriend(22) console.log(result) // 找到了22歲的小姐姐 var result:string = searchFriend(22, '大長腿') console.log(result) // 找到了22歲大長腿的小姐姐
searchFriend 函數中 stature 就是一個可選參數,可以看到在傳遞實參時,此參數可傳可不傳。
2.有默認參數的函數
有默認參數就更好理解了,就是我們不傳遞實參的時候,函數自己會設置有一個默認值,而不是 undefined。
// 默認參數函數 function searchFriend(age:number=18,stature:string='大眼睛'):string{ let yy:string = '' yy = `找到了${age}歲` yy = yy + stature return `${yy}的小姐姐` } var result:string = searchFriend() console.log(result) // 找到了18歲大眼睛的小姐姐
searchFriend 函數中 age 和 stature 參數現在都設置有默認值,使用函數時 () 中未傳入參數,也相當於已經傳入實參 18,‘大眼睛’。
但是現在我還想要找到之前那個 22 歲的大長腿小姐姐怎么辦?
此時只需再次傳入實參即可替換
// 默認參數函數 function searchFriend(age:number=18,stature:string='大眼睛'):string{ let yy:string = '' yy = `找到了${age}歲` yy = yy + stature return `${yy}的小姐姐` } var result:string = searchFriend() console.log(result) // 找到了18歲大眼睛的小姐姐 var result:string = searchFriend(22, '大長腿') console.log(result) // 找到了22歲大長腿的小姐姐
3.未知數目參數的函數
有時候我們有這樣的需求,我傳遞給函數的參數個數不確定。
// 未知數目參數函數 function searchFriend(...xuqiu:string[]):string{ let yy:string = '找到了' for (let i = 0, len = xuqiu.length;i < len;i++) { yy = yy + xuqiu[i] if (i + 1 < xuqiu.length) { yy = yy + '、' } } yy = `${yy}的小姐姐` return yy } var result:string = searchFriend('22歲', '大眼睛', '瓜子臉', '大長腿') console.log(result) // 找到了22歲、大眼睛、瓜子臉、大長腿的小姐姐
把傳入的參數定義為一個數組,使用了 es6 解構展開傳入其中。
原文地址:http://jspang.com/post/typescript.html?tdsourcetag=s_pcqq_aiomsg
