1.数据类型:数据在内存中的存储格式;
2.分类:
基本类型/原始类型:数据直接存储在变量本地(即栈 stack 内存中)的数据类型;
string、number、boolean、undefined、null;
引用类型:数据无法直接保存在变量本地的数据类型(即数据存储在堆 heap 内存中);
function、object。
3.数据类型判断:
typeof operand or typeof (operand);
typeof 操作符返回一个字符串,表示未经计算的操作数的类型;
类型 | 结果 |
string | "string" |
number | "number" |
boolean | "boolean" |
undefined | "undefined" |
null | "object" |
function | "function" |
任何其他对象 | "object" |
宿主对象(由JS环境提供) | Implementation-dependent |
symbol (ECMAScript 6 新增) | "symbol" |
Array.isArray(obj),obj为需要检测的值,若为array,返回true, 否则返回false。
若不存在Array.isArray,则执行以下代码:
if( !Array.isArray ) {
Array.isArray = function( arg ) {
return Object.prototype.toString.call(arg) === '[object Array]';
}
}
4.补充:
栈:又名堆栈,是一种运行受限的线性表。其限制是仅允许在表的一端进行插入push和删除pop操作,这一端被称为栈顶,对应另一端被称为栈底;特性:LIFO(Last In First Out)“后进先出”;
队列:是一种特殊的线性表。特殊之处在于它只允许在表的前端front(对头)进行删除操作,而在表的后端rear(队尾)进行插入操作,和栈一样,是一种操作受限的线性表;特性:FIFO(First In First Out)“先进先出”;
堆:可以被看做是一棵树的数组对象,堆总是一棵完全二叉树;堆是指程序运行时申请的动态内存,而栈只是指一种使用堆的方法(先进后出)。