一、資料型別
資料型別分類:基本資料型別、參考資料型別、大整數 和 Symbol
- 基本資料型別:
Number、String、Boolean、Undefined和Null,其中Undefined和Null不常用;上述五種資料型別在typeof作用下分別回傳"number"、"string"、"boolean"、"undefined“和”object"; - 參考資料型別:
Object(’Object‘、‘Function’和’Array’),在typeof作用下回傳"object"; - 大整數:
BigInt,在typeof作用下回傳"bigint"; - Symbol:
Symbol,在typeof作用下回傳"symbol";
二、資料、記憶體、變數
- 資料:將物體事物以二進制的形式存盤于計算機中的’東東’;
- 記憶體:我們通常所指的是臨時記憶體(記憶體條通電后分配的記憶體空間),固態硬碟是永久存在的,記憶體分類為堆疊和堆記憶體空間,用于存盤相應的資料型別資料;
- 變數:由變數名和變數值組成;
總結:資料存盤于記憶體當中,變數是這個資料的識別符號,通過這個識別符號可以讀寫操作記憶體中的資料;
三、物件
物件是一個事物的屬性及行為描述的封裝體;
四、函式
函式是一個功能模塊封裝及實作的封裝體;
五、建構式之原型鏈
- 一切函式都是通過
new Function()產生(包括函式Function本身,Object也是通過new Function()產生); A instanceof B:其結果回傳true,表示確定A物件是B類的實體、B類的子類、或者說實作了某個特定的介面,那么回傳true的條件是滿足B類的顯示原型與A物件的隱式原型鏈有交集;下面是instanceof案例:
Function instanceof Function // true(注意:Function.__proto__ === Function.prototype,唯一一個物件本身的隱式原型和顯示原型相等)
Function instanceof Object // true
Object instanceof Object // true
Object instanceof Function // true
Array instanceof Array // false
Array instanceof Function // true
Array instanceof Object // true
let arr = new Array();
arr instanceof Array // true
arr instanceof Object // true
arr instanceof Function // false
let obj = {}; // 等同于let obj = new Object();
obj instanceof Object // true
obj instanceof Function // false
六、變數提升、函式提升
- 用
var來宣告的變數名存在變數提升:
console.log(a); // undefined
var a = '變數提升';
- 用此方式宣告的函式存在函式提升:
a(); // '函式提升'
function a() {
console.log('函式提升');
}
- 先變數提升,后函式提升
var c = 1;
function c(c) {
console.log(c);
}
c(2); // 報錯:c is not a function
var宣告的變數掛載于何處?
if(!(b in window)) {
var b = 1;
}
console.log(b); // undefined 因為非模塊化環境下運行,var存在變數提升并且沒有代碼塊這個概念,所以上面陳述句先`var b;`(var宣告的變數會在全域變數掛載和window物件下掛載這個屬性,所以此時列印window.b為undefined),然后`if(!(b in window)) {b=1}`,最后列印`console.log(b)`為undefined;如果是在模塊化環境下運行,在運行到if判斷陳述句時就會報出b is not defined;
七、執行背景關系、執行背景關系堆疊
- 執行背景關系: 全域執行背景關系、函式執行背景關系和
eval函式執行背景關系(此背景關系不推薦使用及產生); - 執行背景關系堆疊:由全域執行背景關系和函式執行背景關系的執行形成的一個堆疊結構,遵循后進先出原則;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/262574.html
標籤:其他
