這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 什麼是JWT JWT是全稱是JSON WEB TOKEN,是一個開放標準,用於將各方數據信息作為JSON格式進行對象傳遞,可以對數據進行可選的數字加密,可使用RSA或ECDSA進行公鑰/私鑰簽名。 使用場景 JWT最常見的使用場景就是緩存 ...
代碼段概念
- 一個script就是一個代碼段
- 在一個頁面中可以有多個代碼段
- 每一個代碼段, 彼此獨立的, 如果上面的代碼段報錯了,不會影響下一個代碼段
- referenceError 引用錯誤
- 下麵代碼段中定義的數據,在下麵的代碼段中可以使用
預編譯/預解析
- 預解析期間做了什麼
- 聲明提升 ,var 定義的變數 提升的僅僅是聲明,沒有賦值,強行調用,返回undefined;function聲明的函數整體要提升, 提升到代碼段的最前面
- 如果是函數內部的局部變數, 就提升到函數內部的最前面
- var定義的變數僅僅是提升, 函數提升不僅是聲明,還有賦值
- 函數表達式 本質是一個變數
fun();//這裡會報錯, 函數表達式提升 只聲明沒賦值, 這裡fun的值是undefined var fun = function(){console.log('fun...')}
- 函數也會提升,如果提升變數名和函數名一樣,只會存在一個名字,所以函數提升後 同名變數的值就會變成函數
console.log(v); var v = 123; function v(){} console.log(v); // 輸出 // function v(){} // 123
- 函數內部沒有定義的的變數,是全局變數
function fn(){ a = 100 //a在函數內部沒有定義 就是全局變數 } fn() console.log(a) //110
數據存儲
1. 棧-基本數據類型
2. 堆- 引用數據類型
JS變數都存儲在記憶體中,而記憶體給變數開闢了兩塊存儲空間,分別為棧(stack)空間和堆(heap)空間;
棧空間:存放JS基本數據類型,通過按值訪問,可以直接操作保存在變數中的實際值;
堆空間:存放JS引用數據類型,通過對象的引用訪問,不可以直接訪問堆記憶體空間中的位置和操作堆記憶體空間。只能操作對象在棧記憶體中的引用地
址。
ECG 執行上下文
1. 全局代碼執行時就會產生全局的執行上下文, execution context globle
2. 每當調用函數就產生一個局部的執行上下文EC
3. 執行上下文產生時, 都需要放到一個棧中, 這個就是執行上下文棧 execution context stack
4. 函數調用完畢,函數的EC就要出棧,當ECG執行完畢時, ECG也要出棧
5. 出入棧 遵循 先進後出 也就是ECG先進 最後出來
6. 代碼的數據都是在上下文EC中去找
堆 GO
1. js在代碼執行時, 會在堆中創建一個全局對象,Globle Object GO
2. 在瀏覽器中 這個GO就是window
3. GO是一個window , window是一個全局對象,對象是屬性的無序集合
4. 聲明的全局變數 和 在全局代碼中寫的函數都掛載在GO上