函數
內置方法/函數
print();
自定義方法
自定義方法的基本格式
返回類型 方法名稱(參數1.......){
方法體
return 返回值
}
定義一個方法然後打印用戶信息
String printUserInfo(String username,int age){ //行參
return "姓名:$username---年齡:$age";
}
print(printUserInfo('張三',20)); //實參
定義一個帶可選參數的方法
String printUserInfo(String username,[int age]){ //行參
if(age!=null){
return "姓名:$username---年齡:$age";
}
return "姓名:$username---年齡保密";
}
定義一個帶默認參數的方法
String printUserInfo(String username,[String sex='男',int age]){ //行參
if(age!=null){
return "姓名:$username---性別:$sex--年齡:$age";
}
return "姓名:$username---性別:$sex--年齡保密";
}
定義一個命名參數的方法
String printUserInfo(String username,{int age,String sex='男'}){ //行參
if(age!=null){
return "姓名:$username---性別:$sex--年齡:$age";
}
return "姓名:$username---性別:$sex--年齡保密";
}
箭頭函數
和es6一樣
List list =['1','2','3'];
list.forEach((value){
print(value);
);
list.forEarch((value=>print(value));
list.forEarch()
匿名函數
和其他語言一致
var printNum =(){
print(12345);
};
printNum();
自執行方法
((int n){
print(n);
)(12);
方法的遞歸
var num =1;
fn(n){
sum *=n;
if(n==1){
return ;
}
f(n-1);
}
fn(5);
閉包
閉包 函數嵌套函數,內部函數會調用外部函數的變量或參數,變量或參數不會被系統回收(不釋放內存)
閉包寫法: 函數嵌套函數 並return裏面的函數
全局變量 常駐內存、污染全局
局部變量 不常住內存會被垃圾機制回收、不會污染全局
fn(){
var a =123;
return(){
a++;
print(a);
};
}
var b =fn()
b();