JS的数据类型分为基本类型和引用类型。
基本类型
基本类型又称为值类型,顾名思义,就是按值访问的类型,基本类型的值会保存在栈中,保存与复制的是值本身。
基本类型可以使用typeof检测数据类型。
string
字符串类型,使用“ ”或‘ ’包起来。
number
数值类型,在js中所有数字皆用浮点数值表示。
注意:
NaN != NaN
0.1 + 0.2 != 0.3
boolean
布尔值类型
注意:所有的对象都是true,即使对象为空!
undefined、null、0、空字符串、NAN为false。
undefined
未定义的值
注意:
undefined == null
null
null值,表示一个空对象指针,用于保存将来的对象。
注意:typeof null返回的是object
symbol
表示唯一的值,ES6新增,调用Symbol()函数创建。
引用类型
引用类型顾名思义就是按引用访问的类型,它的值会保存在堆中,其指向堆的对象地址则会保存在栈中,因此保存和复制的是指向对象的指针。
可以使用instanceof检测数据类型。
ECMAScript 所有的对象都由object对象继承而来。
使用new()方法构造出的对象是引用类型。
object
对象
//创建对象的方法
var o1 = {}
var o2 = new Object();
var o3 = new Object;
Array
数组对象
//创建数组的方法
var a1 = [];
var a2 = new Array();
var a3 = new Array(size);
var a4 = new Array(el0, el1, ..., eln);
Function
函数类型
//创建函数的方法
function fun1 () {}
let fun2 = function(){}
let fun3 = new Function()
注意:typeof可以返回function
RegExp
正则表达式
//创建正则表达式的方法
var reg1 = /pattern/attributes
var reg2 = new RegExp(pattern, attributes);
Date
日期对象
//创建日期的方法
var date=new Date()
基本包装类型
当以对象形式对一个基本类型进行操作时,会创建一个临时对象,完成操作后会立即销毁,每个包装类型都会映射到同名基本类型。
Boolean 对象
//创建布尔值的方法
var bool = new Boolean(true);
Number 对象
//创建数值的方法
var n = new Number(1);
String 对象
//创建字符串的方法
var str = new String("hello world");
单体内置对象
在程序执行之前就已经存在的、由ECMAScript提供的、不依赖于宿主环境的对象。
Math
提供的计算功能
Global
所有在全局作用域中定义的属性和函数,都是 Global 对象的属性。