函數的定義
一 、es5定義函數的兩種方法
1、函數聲明法
function run():string{
return 'run';
}
2、匿名函數(函數表達式)
var fun2=function():number{
return 123;
}
二 、ts中定義方法傳參
function getInfo(name:string,age:number):string{
return `${name} --- ${age}`;
}
alert(getInfo('zhangsan',20));
三 、沒有返回值的方法
function run():void{
console.log('run')
}
run();
四、 方法可選參數
es5裏面方法的實參和行參可以不一樣,但是ts中必須一樣,如果不一樣就需要配置可選參數
function getInfo(name:string,age?:number):string{
if(age){
return `${name} --- ${age}`;
}else{
return `${name} ---年齡保密`;
}
}
alert(getInfo('zhangsan'))
alert(getInfo('zhangsan',123))
注意:可選參數必須配置到參數的最後面
//錯誤寫法
/*
function getInfo(name?:string,age:number):string{
if(age){
return `${name} --- ${age}`;
}else{
return `${name} ---年齡保密`;
}
}
alert(getInfo('zhangsan'))
*/
五、默認參數 可選參數
es5裏面沒法設置默認參數,es6和ts中都可以設置默認參數
function getInfo(name:string,age:number=20):string{
if(age){
return `${name} --- ${age}`;
}else{
return `${name} ---年齡保密`;
}
}
// alert( getInfo('張三'));
alert( getInfo('張三',30));
六、剩餘參數
function sum(a:number,b:number,c:number,d:number):number{
return a+b+c+d;
}
alert(sum(1,2,3,4)) ;
七、三點運算符 接受新參傳過來的值
function sum(...result:number[]):number{
var sum=0;
for(var i=0;i<result.length;i++){
sum+=result[i];
}
return sum;
}
alert(sum(1,2,3,4,5,6)) ;
function sum(a:number,b:number,...result:number[]):number{
var sum=a+b;
for(var i=0;i<result.length;i++){
sum+=result[i];
}
return sum;
}
alert(sum(1,2,3,4,5,6)) ;
八、函數重載
java中方法的重載:重載指的是兩個或者兩個以上同名函數,但它們的參數不一樣,這時會出現函數重載的情況
typescript中的重載:通過爲同一個函數提供多個函數類型定義來試下多種功能的目的
function getInfo(name:string):string;
function getInfo(name:string,age:number):string;
function getInfo(name:any,age?:any):any{
if(age){
return '我叫:'+name+'我的年齡是'+age;
}else{
return '我叫:'+name;
}
}
alert(getInfo('zhangsan')); /*正確*/
alert(getInfo(123)); 錯誤
alert(getInfo('zhangsan',20)); /*正確*/