1.JavaScript有哪些数据类型:
1.1.共有八种数据类型,分别是 String、Boolean、Number、Undefined、NaN、Null、BigInt、Symbol。
-
1.1.1.Symbol代表创建后独一无二的数据类型。
-
1.1.2.BigInt表示大整数。
2.js数据类型在内存中的分配:
2.1.js的数据类型分为:基本数据类型和引用数据类型。
2.2.基本数据类型存储在栈区;引用数据类型存储在堆区。
2.3.栈中存储的是大小固定,需要频繁取用的数据;堆中存储的是占据空间大、大小不确定的数据。
- 引用数据类型在栈中存储了指针,指针指向存储数据的堆中的起始位置。
2.4.堆、栈概念存在于数据结构和操作系统内存中。
-
在数据结构中的存取方式:栈为先进后出、堆为根据优先级排列。
-
在操作系统的分配释放:栈为编译器自动分配释放、堆为开发者分配释放,程序结束后可能由垃圾回收机制分配释放。
3.数据类型的四种检测方式
3.1.typeof
3.1.1.除了object、array、null都会被判断为object以外,其余判断正常。
3.1.2.内部机制是根据数据在系统中存储的二进制前三位判断的。
console.log(typeof 3) //number
3.2.instanceof
3.2.1.只能判断引用数据类型。
3.2.2.内部机制是在原型链是否能找到该类型的原型。
instanceof Number //false
[] instanceof Array //true
3.3.constructor
3.3.1.如果创建一个对象改变其原型,这个方法就不准了。
3.3.1.内部机制是找该数据的构造函数。
constructor === Number //true
3.4.Object.prototype.toString.call()
3.4.1.内部机制是调用Object的toString方法。
Object.prototype.toString.call(3) //Number