值类型与引用类型有什么区别?
- 值类型:String,Number,Boolean,Symbol
- 引用类型:JSON,Array,null
let a1 = 100;
let b1 = a1;
b1 = 200;
console.log(a1);
let a2 = { age:18 };
let b2 = a2;
b2.age = 20;
console.log(a2);
使用==和使用===
- 当判断一个object是不是等于null的时候,才使用==,其他时候都使用===
if(obj == null){}
truly变量和falsely变量
- truly:当一个变量两次取反之后,依然全等于true,那这个变量就是trule变量
- falsely:当一个变量两次取反之后,依然全等于false,那这个变量就是falsely变量
- 除了数字0 NaN 空字符串 null undefined是falsely变量,其他全是truly变量。
console.log(!!""===false);
console.log(!!NaN===false);
console.log(!!0===false);
console.log(!!null===false);
console.log(!!undefined===false);
深拷贝
- JSON.parse(JSON.stringify(obj)):不能存放函数、时间对象、正则...
- 递归:没有考虑循环引用
- lodash.cloneDeep推荐,工作中没必要重复造轮子