javascript中有两大类数据类型
1.值类型(基本类型):
- 数字(Number):一种数字类型,可以是小数,也可以是整数,常用的定义方式为 var a = 3;var b = 3.14
- 字符串(String):字符串是存储字符的变量,可以是引号中的任意文本。使用单引号或双引号都可以:var a = "zhangsan"; var b = 'lisi'
- 布尔(Boolean):布尔(逻辑)只能有两个值:true 或 false 。 var a = true ; b = false 注意:此处的true与false不可用引号引起来
- 空(Null):变量的值设置为 null 来清空变量 var a = null
- 未定义(undefined):变量不含有值。一般是定义了未赋值 var a
- Symbol:( ES6 引入了一种新的原始数据类型,表示独一无二的值)。
2.引用数据类型:对象(Object)、数组(Array)、函数(Function)
- 数组(Array):用来存储一组数据的。var a = [1,2,3,4,5]; var b = new Array(1,2,3)
- 对象(Object):var person={firstname:"John", lastname:"Doe", id:5566}; 访问方式:person.firstname 或者 person['firstname'] (javascript中,几乎所有的事物是对象,对象是拥有属性和方法的数据)
- 函数(Function):函数是由事件驱动的或者当它被调用时执行的可重复使用的代码块,包含在{}中的代码块
基本类型与引用类型的不同
- 访问方式不同:基本数据类型的值是按值访问的;引用类型的值是按引用访问的。
- 存储方式不同:基本类型存在栈内存中,引用类型存储在堆内存中(栈内存中保存了变量标识符和指向堆内存中该对象的指针,堆内存中保存了对象的内容)
下图为基础类型与引用类型的存储方式不同。(正是因为这种存储方式,导致了引用类型的浅拷贝深拷贝的问题)
基本类型:var a = 1; b = 1; 引用类型:var a = [0,1,2,3,4]