天天看點

Javascript的回調函數其他函數解釋

this對象的說明:

1、this是js的一個關鍵字,它代表函數運作時,自動生成的一個内部對象,隻能在函數内部使用。this的指向在函數運作時才進行綁定。
           

聲明提升機制:

1、在 JavaScrip 中變量聲明和函數聲明,聲明會被提升到目前作用域的頂部。
	2、js解析器:
	    浏覽器中有一套專門解析JS代碼的程式,這個程式稱為js的解析器。
	    浏覽器運作整個頁面文檔時,遇到<script>标簽時JS解析器開始解析JS代碼。
	3、js解析器的工作步驟:
	    1.預解析代碼
	      主要找一些關鍵字如var、function、參數等,并存儲進倉庫裡面(記憶體);
	      變量的初始值為 undefined;
	      函數的初始值就是該函數的代碼塊;
	      當變量和函數重名時:不管順序誰前誰後,隻留下函數的值;
	      當函數和函數重名時:會留下後面那個函數。
	    2.逐行執行代碼
	  	  當預解析完成之後,就開始逐行執行代碼,倉庫中變量的值随時都可能會發生變化
           

回調函數:

回調函數的原則:
    1、寫出來的方法不是給自己調用,而是給别人(這裡指的别人可以指的是其他函數)。
    2、方法會在将來的某個時間被其他人執行,而不是開發人員自己手動調用執行。
    注:隻要不是自己直接調用的方法都算是将來執行,例如fn()表示我現在立即執行了fn()函數。隻要符合以上兩條規則就說明該函數是回調函數。回調函數常常用于處理異步。

           

自執行函數:

1、要執行一個函數,我們必須要有方法定位函數、引用函數。
    匿名函數如何調用?
    匿名自執行函數,也叫立即執行函數(IIFE)。
    (function () {
        console.log(123);
    })();
    小括号能把我們的表達式組合分塊,并且每一塊都有一個傳回值,這個傳回值實際上就是小括号中表達式的傳回值。
    自執行函數的好處:獨立的作用域,不會污染全局環境!
 2、常見的自執行的形式:
	傳參:
        (function (a,b) {
        	console.log(a + b);
   		})(2,3);
	無參數常用:
        (function () {
            console.log(11);
        })();

           

引用類型:

1、引用類型:對象類型,如 Object 、Array 、Function 等等
    引用資料類型是儲存在堆記憶體中的對象。
    在JavaScript中不可以直接操作堆記憶體中的對象,隻能操作對象在棧記憶體中的引用位址。
        var obj1 = {name: '老王', age: 28};
        var obj2 = obj1;
        obj2.name = '老趙';
        console.log(obj1.name);
        console.log(obj2.name);
    var obj2 = obj1; 在棧記憶體中把堆記憶體對象的引用位址複制一份給obj2。
    意味着 obj1和obj2 指向同一個堆記憶體對象。
    obj2.name = '老趙'; 實際上改變的是堆記憶體對象。
    是以,obj1.name和obj2.name 都是'老趙'。
           

繼續閱讀