一、思考:
(1)typeof能判断哪些类型
(2)何时使用===何时使用==
(3)值类型和引用类型区别
(4)如何实现深拷贝
二、知识点:
1、变量类型
(1)值类型与引用类型
深入分析:
值类型:
引用类型:
常见值类型:
常见引用类型
(2)typeof运算符
- 识别所有值类型
- 识别函数
- 判断是否是引用类型(不可再细分)
(3)深拷贝
const obj1 = {
age: 20,
name: 'xxx',
address: {
city: 'beijing'
},
arr: ['a', 'b', 'c']
}
const obj2 = obj1
obj2.address.city = 'nanjing'
console.log(obj1.address.city) // nanjing
function deepClone(obj) {
if (typeof obj != 'object' || obj == null) {
// obj是null,或者不是对象和数组,直接返回
return obj
}
// 初始化返回结果
let result
if (obj instanceof Array) {
result = []
} else {
result = {}
}
for (let key in obj) {
// 保证key不是原型的属性
if (obj.hasOwnProperty(key)) {
// 递归调用
result[key] = deepClone(obj[key])
}
}
// 返回结果
return result
}
2、变量计算
(1)类型转换
- 字符串拼接
- ==
- if语句和逻辑运算
truly变量:!!a === true 的变量
falsely变量:!!a === false 的变量
if语句:
逻辑判断: