1、js变量提升
var 会导致变量提升,在下方定义的a,在前面依旧可以读取
console.log(a) // 1
var a = 1
let、const 不会导致变量提升,代码从上往下执行
console.log(a) // 会报错
let a = 1
console.log(a) // 1
2、深拷贝和浅拷贝
简单数组(一层)的深拷贝,可以用slice或者concat就可以实现,这里就不一一举例了,下面我们直接亮出完全深拷贝的方法,自己copy过去测哈
// source:为源数据
function deepClone(source) {
if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'deepClone')
}
const targetObj = source.constructor === Array ? [] : {}
Object.keys(source).forEach(keys => {
if (source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = deepClone(source[keys])
} else {
targetObj[keys] = source[keys]
}
})
return targetObj
}