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 都是'老趙'。