typescript - 3.函數

(1)函數的定義

## 函數聲明法css

// function run():string{
//     return 'run';
// }


//錯誤寫法,返回類型錯誤
// function run():string{
//     return 123;
// }

匿名函數

// var fun2=function():number{
    //     return 123;
    // }


    // alert(fun2()); /*調用方法*/

ts中定義方法傳參

/*
        function getInfo(name:string,age:number):string{

                return `${name} --- ${age}`;
        }

        alert(getInfo('zhangsan',20));

    */

//匿名方法
var getInfo=function(name:string,age:number):string{
    return `${name} --- ${age}`;
}

alert(getInfo('zhangsan',40));

//沒有返回值的方法
 function run():void{
     console.log('run')
 }
 run();

(2)方法可選參數

es5裏面方法的實參和行參能夠不同,可是ts中必須同樣,若是不同就須要配置可選參數java

function getInfo(name:string,age?:number):string{
                if(age){
                    return `${name} --- ${age}`;
                }else{
                    return `${name} ---年齡保密`;
                }
        }

        alert(getInfo('zhangsan'))
        alert(getInfo('zhangsan',123))

(3)默認參數 可選參數

es5裏面無法設置默認參數,es6和ts中均可以設置默認參數es6

function getInfo(name:string,age:number=20):string{
                            if(age){
                                return `${name} --- ${age}`;
                            }else{
                                return `${name} ---年齡保密`;
                            }                     
                }

(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)) ;

(5)函數重載

  • java中方法的重載:重載指的是兩個或者兩個以上同名函數,但它們的參數不同,這時會出現函數重載的狀況。
  • typescript中的重載:經過爲同一個函數提供多個函數類型定義來試下多種功能的目的。

ts爲了兼容es5 以及 es6 重載的寫法和java中有區別。typescript

//es5中出現同名方法,下面的會替換上面的方法 
        /*
            function css(config){

            }

            function css(config,value){


            }
        */

es5出現同名方法會覆蓋前面,下面看ts中的重載
示例1:函數

function getInfo(name:string):string;
function getInfo(age:number):string;
function getInfo(str:any):any{

    if(typeof str==='string'){

        return '我叫:'+str;
    }else{

        return '個人年齡是'+str;
    }

}

alert(getInfo('張三'));   //正確


alert(getInfo(20));   //正確


alert(getInfo(true));    //錯誤寫法

示例2:this

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));

(6)箭頭函數

注意:this指向的問題 箭頭函數裏面的this指向上下文es5

//es5
// setTimeout(function(){
//     alert('run')
// },1000)



setTimeout(()=>{
    alert('run')
},1000)
相關文章
相關標籤/搜索