一、数据类型
1、基础类型:null,undefined,string,number,boolean,bigint,symbol;
2、引用类型:object,array等都算是引用类型;
二、两种类型之间的区别
1、基础类型:存储在栈内存中,大小固定,方便快速查找;
2、引用类型:存储在堆内存中,存储一个指针,通过指针查找对应存储的的大值;
三、赋值引起的问题
1、基础类型:直接赋值,没有问题;
2、引用类型:赋值给新对象,新对象修改,原对象的值也需要修改;
var a = {}; var b = a; b.name = 'name'; console.log(a); // {name:name}
三、如何判断数据类型
1、typeof:可以判断基础类型;
2、instanceof:可以判断引用类型,但是不完全;
3、Object.prototype.toString.call(arg):可以判断所有类型;
function person() { this.name = 10; } // typeof typeof 1; // number typeof '1'; // string typeof true; // boolean typeof null; // object typeof undefined; //undefiend typeof Symbol; // function typeof person; // function typeof []; // object typeof {}; // object // instanceof person instanceof person; // true // Object.prototype.toString.call(arg) Object.prototype.toString.call(1); //[object Number] Object.prototype.toString.call('1'); //[object String] Object.prototype.toString.call(true); //[object Boolean] Object.prototype.toString.call(null); //[object Null] Object.prototype.toString.call(undefined); //[object Undefined] Object.prototype.toString.call(Symbol); //[object Function] Object.prototype.toString.call(person); //[object Function] Object.prototype.toString.call([]); //[object Array] Object.prototype.toString.call({}); //[object Object]
四、undefned与null有什么不同
1、undefined:表示已定义但是未赋值;
2、null:代表值为空,内存中找不到值地址指向;
五、判断对象{}为空
1、Object.keys({}).length === 0;
2、JSON.stringify({}) === '{}';
后续继续完善