一、JS数据类型
值类型(基本类型):字符串(String)、数字(Number)、布尔(Boolean)、空(Null)、未定义(Undefined)、Symbol。
引用类型(对象类型):对象(Object)、数组(Array)、函数(Function)
还有两个特殊的对象:正则(RegExp)和日期(Date)。
区分:
1、关于赋值:基本类型在赋值时,会在变量对象上创建一个新的位置,并把值填入;而引用类型其复制的值是指向同一对象的指针
2、关于属性和方法:基本类型无法动态定义或访问其属性或者方法,而引用类型可以定义并访问属性或方法。
3、关于内存:基本类型存储在栈(stack)中【作为简单的数据段,只需存储在较小的内存区域并且便于迅速查找的位置】;引用类型存储在堆(heap)中。
*Javascript不可以直接访问内存,因此在变量存储引用类型数据时,存的只是对对象的引用,而非真正的地址。
特别地:关于函数传参的说明
JS中所有传参都是按值传递,但是对基本类型和引用类型会产生不同效果
始终牢记,传参时,引用类型也是对该引用指针进行一个复制、按值传递的过程,因此在形参进行访问时会影响指向的对象的内容;BUT,形参若重新赋值,会导致引用指针的改变,函数结束后形参被销毁,因而不产生任何影响
例子:
function test(a,b,c){
a.push(1);
b=[1];
c=2;
}
var a=[2],b=[3],c=9;
console.log(a); //输出 [2,1]
console.log(b); //输出 [3]
console.log(c); //输出 9
二、数据类型判断方法
这位博主介绍得很全,在此不赘述