JS部分
1、undefined和null
首先js的undefined是一個變量,并非關鍵字,是一個設計失誤。undefined表示從未賦值的自然狀態,null表示定義了但是是空。
2、字符串是UTF16
3、number(264-253+3),符合IEEE745雙精度浮點數
4、Symbol,一切非字符串的對象key的合集
var o = new Object
o[Symbol.iterator] = function() {
var v = 0
return {
next: function() {
return { value: v++, done: v > 10 }
}
}
};
for(var v of o)
console.log(v); // 0 1 2 3 ... 9
5、類型判定和轉換
image.png
判斷數組的方法
// 裝箱轉換,基本類型轉換為對應的對象,Array天生是對象
1. arr isntanceof Array
2.arr.__proto__ === Array.prototype
// 每一類裝箱對象皆有class屬性
3. arr.constructor === Array
4. Object.prototype.toString.call(arr) === '[object Array]'
5. Array.isArray(arr)
6、js對象兩類屬性
數據屬性:value\writable\enumerable/configurable
訪問器屬性:getter\setter\enumerable/configurable
7、js原型
Object.create 根據指定的原型創建新對象,原型可以是 null;
Object.getPrototypeOf 獲得一個對象的原型;Object.setPrototypeOf 設置一個對象的原型。
8、內置對象
image.png
9、事件循環,宏任務,微任務
Promise 產生的是 JavaScript 引擎內部的微任務,而 setTimeout 是瀏覽器 API,它產生宏任務。