js基础:变量
一,变量
0, Symbol
es6新增的第七种数据类型,通过Symbol函数生成
Symbol函数的参数只是表示对当前Symbol值的描述,因此相同参数的Symbol函数的返回值是不相等的。
由于每一个Symbol值都是不相等的,这意味着Symbol值可以作为标识符,用于对象的属性名,就能保证不会出现同名的属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键被不小心改写或覆盖。
var mySymbol = Symbol(); // 第一种写法 var a = {}; a[mySymbol] = 'Hello!'; // 第二种写法 var a = { [mySymbol]: 'Hello!' };
1,typeof 能识别哪些类型
识别所有数据类型
识别函数 :function
识别引用类型 (不可再细分): object
2,什么时候用 === 、==。除了xxx == null / undefined ,都用 ===
3,引用类型 与 值类型。
引用类型 栈 和堆:a 栈存的是内存地址。对象存在堆中(内存地址 - 对象)。a 赋值给b,只是把内存地址赋给b。引用的是同一个对象。
null 是特殊引用类型,指向空地址
4, 手写深拷贝
/** * 手写深拷贝 * */ export function deepClone(obj) { if(typeof obj !== 'object' || obj == null) { console.log('result22:', obj) return obj } let result if(obj instanceof Array) { result = [] } else { result = {} } for(const key in obj) { if(Object.prototype.hasOwnProperty.call(obj,key)) { //不是通过原型继承来的 // 递归调用!! result[key] = deepClone(obj[key]) } } console.log('result:', result) return result }
浙公网安备 33010602011771号