JS高级 查缺补漏
js和css一般建议文件名全小写,以中划线分割不同单词。大小驼峰会造成linux/windows上不同的系统,大小写规范不同的问题。
一般来说,要把样式表放在顶部,把脚本放在底部。样式表先加载,可以加快样式的显示,脚本放在底部,如果脚本有bug或者性能差,也不影响页面显示。
普通函数内的this, 非严格模式下是window, 严格模式下是undefined.
样式中的0值,不要带单位。样式值使用双引号,url不要带引号。
Symbol:
let s1 = Symbol('abc');
let s2 = Symbol('abc');
s1 === s2; => false
let s3 = Symbol.for('xxx');
let s4 = Symbol.for('xxx');
s3 === s4; => true
BigInt: 跟Symbol一样,不能用new来创建
let max = Number.MAX_SAFE_INTEGER; // 最大安全整数
let max1 = max + 1
let max2 = max + 2
console.log(max1 === max2); //true: 溢出错误
console.log('===============');
let bi1 = BigInt(Number.MAX_SAFE_INTEGER) || 9007199254740991n;
let max3 = bi1 + 1n;
let max4 = bi1 + 2n;
console.log(max3 === max4) // false
console.log('===============');
对象:
let c = {a: 1, b: 2}
let d = new Object(c)
console.log(c === d); ==> true (new 出来的对象,传入的参数是非undefined/null, 则直接返回该对象)


属性描述符里的特性:value: 默认值;configurable: 可配置(是否可以删除,是否可以通过defineProperty进行二次配置)默认false; enumerable: 可以枚举;writable: 可写;set: 数据劫持;get: 数据获取。
Object.assign是浅拷贝。var a = Object.assign({}, {a: 1})

Reflect:


for … in 和for … of: key和value的区别(for…of只能用于数组)