typeof 能判断哪些类型?
- 能判断 所有的值类型
- 能判断函数
- 能判断引用类型(不细分, 所有的是object)
值类型有哪些?
number、string、undefined、boolean、symbol(可能不全)
值类型和引用类型的区别?
- 值类型拷贝, 值不会有任何关联
- 引用类型拷贝, 值修改,同步修改, 大家指向的是一个地址
通常不会直接问, 基本是出题目, 直接问不好表达
手写深拷贝
写一个最基础的就可以了, 等你写完循环引用, Map Set类型的处理天都黑了
function deepCopy(obj = {}) {
if(typeof obj !== 'object' || typeof obj === null) {
return obj
}
let resolve;
if(obj instanceof Array){
resolve = []
} else {
resolve = {}
}
Object.keys(obj).forEach(key=> {
resolve[key] = deepCopy(obj[key])
})
return resolve
}
何时使用===, 何时使用==?
-
两等存在隐式转换并不推荐使用
-
推荐使用三等
-
根据各大开源库使用的习惯是 除了 null 用两等其他都三等
-
== null 等同与 === null || === undefined