閉包 概念
阿新 • • 發佈:2018-04-19
cti aid 就是 func 標識 emma 能夠 私有變量 ref
return{
increment:function(){
count++;
},
get:function(){
return count;
}
}
}
var foo =Counter(4);
foo.increment();
foo.get();// 5 這裏,Counter 函數返回兩個閉包,函數 increment 和函數 get。 這兩個函數都維持著對外部作用域 Counter 的引用,因此總可以訪問此作用域內定義的變量count。 objective c的閉包(block) objective c 中的的閉包,是通過block實現的。Apple在C,Objective-C和C++中擴充了Block這種文法的,並且在GCC4.2中進行了支持。你可以把它理解為函數指針,匿名函數,閉包,lambda表達式,這裏暫且用塊對象來表述,因為它們之間還是有些許不同的。 如果以內聯方式使用塊對象,則無需聲明。塊對象聲明語法與函數指針聲明語法相似,但是塊對象應使用脫字符(^)而非星號指針 (*)。下面的代碼聲明一個aBlock變量,它標識一個需傳入三個參數並具有float返回值的塊。
閉包就是能夠讀取其他函數內部變量的函數。例如在javascript中,只有函數內部的子函數才能讀取局部變量,所以閉包可以理解成“定義在一個函數內部的函數“。在本質上,閉包是將函數內部和函數外部連接起來的橋梁。
作用:
1、保護函數內的變量安全
2、在內存中維持一個變量。
模擬私有變量: function Counter(start){ var count = start;return{
increment:function(){
count++;
},
get:function(){
return count;
}
}
}
var foo =Counter(4);
foo.increment();
foo.get();// 5 這裏,Counter 函數返回兩個閉包,函數 increment 和函數 get。 這兩個函數都維持著對外部作用域 Counter 的引用,因此總可以訪問此作用域內定義的變量count。 objective c的閉包(block) objective c 中的的閉包,是通過block實現的。Apple在C,Objective-C和C++中擴充了Block這種文法的,並且在GCC4.2中進行了支持。你可以把它理解為函數指針,匿名函數,閉包,lambda表達式,這裏暫且用塊對象來表述,因為它們之間還是有些許不同的。 如果以內聯方式使用塊對象,則無需聲明。塊對象聲明語法與函數指針聲明語法相似,但是塊對象應使用脫字符(^)而非星號指針 (*)。下面的代碼聲明一個aBlock變量,它標識一個需傳入三個參數並具有float返回值的塊。
閉包 概念