1. 程式人生 > 其它 >八、函式及相關

八、函式及相關

1  函式

  和C語言一樣,函式由返回值,函式名,函式體組成

  int getNum(){}

  方法呼叫,使用方法名呼叫即可

  getNum();

2  引數

  不指定型別引數

  int sumNum(n){}

  指定型別引數,和C語言一摸一樣

  int sumNum(int n,String str){}

3  可選引數

  中括號內的引數可傳可不傳

  String getUser(String name,[int age,String sex]){}

  getUser('張三');

  getUser('張三','男');

4  帶預設引數

  String getUser(String name,[int age,String sex = ‘男’]){}

  getUser('張三',20,'女');

5  命名引數

  String getUser(String name,{int age,String sex = ‘男’}){}

  getUser('張三',age:20,sex:'女');

6  方法作為引數

  a(){
    print("aaaa");
  }

  fn(aaa){
    aaa();
  }

  fn(a);

7  匿名方法

  var fn=(int n){
    print("這是個匿名方法"+n);
  };

  fn(1);

  

8  箭頭函式(注意:方法體只能寫一句話,並且不要加分號)

  List items = [1,2,3,4];
  var newList = items.forEach((value)=>print(value));

  

  List items = [1,2,3,4];
  var newList = items.forEach((value)=>{
    print(value)
  });

9  自執行方法

  ((){
    print("這是自執行方法");
  })();
  //帶引數
  String str = 'aaaa';
  ((String args){
    print("$args");
  })(str);

10  閉包

  閉包的產生及作用:

  全域性變數特點:  全域性變數常駐記憶體,全域性變數汙染全域性

  區域性變數特點:  不常駐記憶體,會被垃圾回收機制回收,不會汙染全域性

  閉包產生:常駐記憶體,不汙染全域性

  閉包本質:函式巢狀函式,內部函式會呼叫外部函式的變數或引數。

  fn(){
    var a=123;
    return (){
      a++;
      print(a);
    };
  }
  var b = fn();
  b();
  b();
  b();