咱們如今來理解下函數引用和函數調用的本質區別:當引用函數時候,多個變量內存存儲的是函數的相同的入口指針,所以對於同一個函數來說,不管多少個變量引用,他們都是相等的,由於對於引用類型(對象,數組,函數等)都是比較的是內存地址,若是他們內存地址同樣的話,說明是相同的;可是對於函數調用來說,好比代碼三;每次調用的時候,都被分配一個新的內存地址,因此他們的內存地址不相同,所以他們會返回false,可是對於代碼二來說,咱們看到他們沒有返回函數,只是返回數值,他們比較的不是內存地址,而是比較值,因此他們的值相等,所以他們也返回true,咱們也能夠看看以下實列化一個對象的列子,他們也被分配到不一樣的內存地址,所以他們也是返回false的;以下代碼測試:數組
function F(){
this.x = 5;
}
var a = new F();
var b = new F();
console.log(a === b); // false
函數與通常變量的差別,在於如何使用數據。與函數相關的數據(或代碼)可被執行。想執行函數時,就在函數名稱後加上括號(),若是函數須要自變量,也要記得附加上。函數
函數變量的值不是代碼自己,而是指向存儲代碼的存儲器位置的引用。測試
回調函數。 簡單理解就是:函數a有一個參數,這個參數是個函數b,當函數a執行完之後執行函數b。那麼這個過程就叫回調。
---------------------
this
在C語言或其餘大部分語言中,當函數return了以後,函數內部申明的變量將被銷燬,由於函數內部的變量是在棧上的,棧會隨着函數的退出而銷燬,若是不理解的,能夠去研究下C++的傳值和傳引用。指針