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、类型判定和转换
判断数组的方法
// 装箱转换,基本类型转换为对应的对象,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、内置对象
9、事件循环,宏任务,微任务
Promise 产生的是 JavaScript 引擎内部的微任务,而 setTimeout 是浏览器 API,它产生宏任务。