值类型和引用类型
引用类型修改后, 原来的值也会变
常见值类型 undefined ‘abc’ 100 true symbol(’s’)
常见引用类型 obj array null(特殊引用类型, 指针指向空地址) fn() {}
typeof 运算符
识别所有值类型
识别函数
判断是否是引用类型(不可再细分)
手写深拷贝
deepClone(obj = {}) {
if (typeof obj !== "object" || obj == null) {
return obj;
}
let result;
if (obj instanceof Array) {
result = [];
} else {
result = {};
}
for (const key in obj) {
if (Object.hasOwnProperty.call(obj, key)) {
result[key] = this.deepClone(obj[key]);
}
}
return result;
},
变量计算
何时使用 === 何时使用 ==
除了 == null 之外, 其他一律用 ===
obj == null
相当于 obj === null || obj ===undefined
truly变量和falsely变量
truly变量和falsely变量 经过两步取反后的值